Server definition
- Hash
- sha256:d676d577c175506b4bf39e0396710723821eb014d881631c9b114d300b553c1d
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "Open Waters AIS (https://openwaters.io/ais/) is the open AIS network: live vessel positions from government feeds, partner aggregates, and volunteer receivers, deduplicated into one picture.\n\n- Live terrestrial coverage is strongest in the Nordics and wherever volunteer receivers are; elsewhere positions come from partner aggregates, mostly AISHub, which runs about a minute behind. get_coverage reports each source's current delay, also published at https://ais.openwaters.io/v1/stats. Where no feed or receiver hears, there is nothing. Call get_coverage before saying a region has no traffic.\n- A position is the last report heard. find_vessels_in_area and find_vessels_near return vessels heard in the last 30 minutes. get_vessels and search_vessels_by_name also find vessels heard earlier, with the last position the network heard from them. Every row carries seen and age_s, so read an old position as where the vessel was, not where it is.\n- Destination, ETA, draught, dimensions, call sign, and IMO come from a vessel's static data, which it sends every six minutes, so a vessel heard for the first time may lack them. Flag comes from the MMSI's maritime identification digits and is present when those are known. ETA has no year: read it as the next occurrence.\n- Anonymous calls may cover 100 square degrees and look up 10 vessels by MMSI or IMO per call. A free personal token from https://openwaters.io/ais/token, sent as an Authorization: Bearer header, raises that to 400 square degrees and 50 vessels. A tool says so when a call exceeds its limit.\n- Show the credit lines from each result's attribution field wherever the data is displayed.\n- A supplement to onboard AIS, never a substitute, and not for safety of navigation.\n- get_vessel_track answers where a vessel has been. Anonymous and personal calls reach the last 48 hours; feeder and commercial tokens reach further, up to a year per call.\n- These tools answer one question at a time. For continuous updates use the WebSocket stream at wss://ais.openwaters.io/v1/stream, documented at https://openwaters.io/api/ais/.\n- get_vessels adds particulars for vessels an enrichment source knows, merged into one vocabulary, with a provenance map naming each field's source and a sources map carrying each source's credit, license, and its own page for the vessel. The sources: Wikidata, by IMO number; the US Coast Guard's PSIX, for a US-flag vessel matched by call sign and name or by its FCC license's official number; the FCC's ship station licenses, by MMSI; Norway's fishing vessel register, matched as PSIX is; Transport Canada's vessel register (Open Government Licence - Canada), by IMO and name for a CA-flag vessel; and ISED's Canadian MMSI registry, asked on demand for heard CA-flag vessels. Each field is present only when a source has it; the registers refresh weekly, and the Canadian MMSI registry answers stand about ninety days. Registered dimensions can differ from the ones AIS reports, and the draught AIS reports is the current voyage's. Wikidata is CC0 and the US sources public domain; the Norwegian register's NLOD 2.0 asks for the credit its sources entry carries.\n- The network holds no port call, weather, or inspection data. Owners and operators come only from Wikidata, for the ships whose items list them.",
"tools": [
{
"description": "Vessels currently inside a latitude/longitude bounding box, newest report first, with optional kind and ship-type filters. Use for what is in a port, a strait, or a stretch of coast. Anonymous calls may cover 100 square degrees per call.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"bbox": {
"additionalProperties": false,
"properties": {
"max_lat": {
"description": "north edge, degrees, -90 to 90",
"type": "number"
},
"max_lon": {
"description": "east edge, degrees, -180 to 180",
"type": "number"
},
"min_lat": {
"description": "south edge, degrees, -90 to 90",
"type": "number"
},
"min_lon": {
"description": "west edge, degrees, -180 to 180",
"type": "number"
}
},
"required": [
"min_lat",
"min_lon",
"max_lat",
"max_lon"
],
"type": "object"
},
"flag": {
"description": "only vessels flying this flag: ISO 3166-1 alpha-2, e.g. NO, FI, MH",
"type": "string"
},
"kind": {
"description": "only this kind: vessel, aton (aid to navigation), base (base station), or sar (search and rescue aircraft)",
"type": "string"
},
"limit": {
"description": "rows to return: default 50, maximum 200",
"type": "integer"
},
"types": {
"description": "only these ITU ship type codes, e.g. 30 fishing, 36 sailing, 37 pleasure craft, 52 tug, 60 passenger, 70 cargo, 80 tanker; a code ending in 0 matches its decade, so 70 matches 70 to 79",
"items": {
"maximum": 255,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
}
},
"required": [
"bbox"
],
"type": "object"
},
"name": "find_vessels_in_area",
"outputSchema": {
"additionalProperties": false,
"properties": {
"attribution": {
"additionalProperties": {
"type": "string"
},
"description": "credit line per source kind in the rows, to show with the data",
"type": "object"
},
"total": {
"description": "vessels matched before the limit was applied",
"type": "integer"
},
"truncated": {
"description": "true when total exceeds the rows returned; narrow the query or raise limit",
"type": "boolean"
},
"unknown_imo": {
"description": "requested IMO numbers matching no vessel the network has heard",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
},
"unknown_mmsi": {
"description": "requested MMSIs matching no vessel the network has heard",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
},
"vessels": {
"items": {
"additionalProperties": false,
"properties": {
"age_s": {
"description": "seconds since seen",
"type": "integer"
},
"beam": {
"description": "beam, metres",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"bearing": {
"description": "degrees true from the search centre to the vessel (find_vessels_near)",
"type": [
"null",
"number"
]
},
"callsign": {
"type": "string"
},
"cog": {
"description": "course over ground, degrees true",
"type": [
"null",
"number"
]
},
"destination": {
"description": "destination as typed by the crew: a port name, a UN/LOCODE, or nothing useful",
"type": "string"
},
"distance_nm": {
"description": "nautical miles from the search centre (find_vessels_near)",
"type": [
"null",
"number"
]
},
"draught": {
"description": "maximum static draught, metres",
"type": [
"null",
"number"
]
},
"eta": {
"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"
},
"flag": {
"description": "ISO 3166-1 alpha-2 code of the flag state, from the MMSI's maritime identification digits",
"type": "string"
},
"heading": {
"description": "true heading, degrees",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"imo": {
"description": "IMO number, once the vessel's static data has been heard",
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"kind": {
"description": "vessel, aton (aid to navigation), base (base station), or sar (search and rescue aircraft)",
"type": "string"
},
"lat": {
"description": "latitude of the last position, degrees; absent when no position has been heard",
"type": [
"null",
"number"
]
},
"length": {
"description": "overall length, metres",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"lon": {
"description": "longitude of the last position, degrees",
"type": [
"null",
"number"
]
},
"mmsi": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"name": {
"description": "name from the vessel's static data, when heard",
"type": "string"
},
"nav_status": {
"description": "AIS navigational status code",
"maximum": 255,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"nav_status_name": {
"type": "string"
},
"particulars": {
"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"
},
"callsign": {
"description": "call sign as registered; the callsign in the vessel's own properties is the one AIS reports",
"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"
]
},
"provenance": {
"additionalProperties": {
"type": "string"
},
"description": "the source of each particulars field, by the field's name; values are keys of sources (get_vessels)",
"type": "object"
},
"seen": {
"description": "time of the last message heard, RFC 3339 UTC",
"type": "string"
},
"sog": {
"description": "speed over ground, knots",
"type": [
"null",
"number"
]
},
"source": {
"description": "feed or station kind the last message came from",
"type": "string"
},
"sources": {
"additionalProperties": {
"additionalProperties": false,
"properties": {
"credit": {
"description": "display credit for the source",
"type": "string"
},
"license": {
"type": "string"
},
"url": {
"description": "the source's page for this vessel, or its public search when the source keeps no per-vessel pages",
"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"
},
"station": {
"type": "string"
},
"type": {
"description": "ITU ship and cargo type code, or the aid type for an aton",
"maximum": 255,
"minimum": 0,
"type": "integer"
},
"type_name": {
"type": "string"
}
},
"required": [
"mmsi",
"kind",
"seen",
"age_s",
"source",
"station"
],
"type": "object"
},
"type": [
"null",
"array"
]
}
},
"required": [
"vessels",
"total",
"truncated",
"attribution"
],
"type": "object"
}
},
{
"description": "Vessels within a radius (default 10 NM, maximum 50) of a point or of another vessel's last known position, nearest first, each with distance and bearing from the centre. Use for what is near this position or what is around vessel X.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"flag": {
"description": "only vessels flying this flag: ISO 3166-1 alpha-2, e.g. NO, FI, MH",
"type": "string"
},
"kind": {
"description": "only this kind: vessel, aton, base, or sar",
"type": "string"
},
"lat": {
"description": "centre latitude, degrees; give lat and lon, or mmsi",
"type": [
"null",
"number"
]
},
"limit": {
"description": "rows to return: default 50, maximum 200",
"type": "integer"
},
"lon": {
"description": "centre longitude, degrees",
"type": [
"null",
"number"
]
},
"mmsi": {
"description": "centre on this vessel's last position instead of lat and lon; the vessel itself is left out of the results",
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"radius_nm": {
"description": "search radius in nautical miles: default 10, maximum 50",
"type": "number"
},
"types": {
"description": "only these ITU ship type codes; a code ending in 0 matches its decade",
"items": {
"maximum": 255,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
}
},
"type": "object"
},
"name": "find_vessels_near",
"outputSchema": {
"additionalProperties": false,
"properties": {
"attribution": {
"additionalProperties": {
"type": "string"
},
"description": "credit line per source kind in the rows, to show with the data",
"type": "object"
},
"total": {
"description": "vessels matched before the limit was applied",
"type": "integer"
},
"truncated": {
"description": "true when total exceeds the rows returned; narrow the query or raise limit",
"type": "boolean"
},
"unknown_imo": {
"description": "requested IMO numbers matching no vessel the network has heard",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
},
"unknown_mmsi": {
"description": "requested MMSIs matching no vessel the network has heard",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
},
"vessels": {
"items": {
"additionalProperties": false,
"properties": {
"age_s": {
"description": "seconds since seen",
"type": "integer"
},
"beam": {
"description": "beam, metres",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"bearing": {
"description": "degrees true from the search centre to the vessel (find_vessels_near)",
"type": [
"null",
"number"
]
},
"callsign": {
"type": "string"
},
"cog": {
"description": "course over ground, degrees true",
"type": [
"null",
"number"
]
},
"destination": {
"description": "destination as typed by the crew: a port name, a UN/LOCODE, or nothing useful",
"type": "string"
},
"distance_nm": {
"description": "nautical miles from the search centre (find_vessels_near)",
"type": [
"null",
"number"
]
},
"draught": {
"description": "maximum static draught, metres",
"type": [
"null",
"number"
]
},
"eta": {
"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"
},
"flag": {
"description": "ISO 3166-1 alpha-2 code of the flag state, from the MMSI's maritime identification digits",
"type": "string"
},
"heading": {
"description": "true heading, degrees",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"imo": {
"description": "IMO number, once the vessel's static data has been heard",
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"kind": {
"description": "vessel, aton (aid to navigation), base (base station), or sar (search and rescue aircraft)",
"type": "string"
},
"lat": {
"description": "latitude of the last position, degrees; absent when no position has been heard",
"type": [
"null",
"number"
]
},
"length": {
"description": "overall length, metres",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"lon": {
"description": "longitude of the last position, degrees",
"type": [
"null",
"number"
]
},
"mmsi": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"name": {
"description": "name from the vessel's static data, when heard",
"type": "string"
},
"nav_status": {
"description": "AIS navigational status code",
"maximum": 255,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"nav_status_name": {
"type": "string"
},
"particulars": {
"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"
},
"callsign": {
"description": "call sign as registered; the callsign in the vessel's own properties is the one AIS reports",
"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"
]
},
"provenance": {
"additionalProperties": {
"type": "string"
},
"description": "the source of each particulars field, by the field's name; values are keys of sources (get_vessels)",
"type": "object"
},
"seen": {
"description": "time of the last message heard, RFC 3339 UTC",
"type": "string"
},
"sog": {
"description": "speed over ground, knots",
"type": [
"null",
"number"
]
},
"source": {
"description": "feed or station kind the last message came from",
"type": "string"
},
"sources": {
"additionalProperties": {
"additionalProperties": false,
"properties": {
"credit": {
"description": "display credit for the source",
"type": "string"
},
"license": {
"type": "string"
},
"url": {
"description": "the source's page for this vessel, or its public search when the source keeps no per-vessel pages",
"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"
},
"station": {
"type": "string"
},
"type": {
"description": "ITU ship and cargo type code, or the aid type for an aton",
"maximum": 255,
"minimum": 0,
"type": "integer"
},
"type_name": {
"type": "string"
}
},
"required": [
"mmsi",
"kind",
"seen",
"age_s",
"source",
"station"
],
"type": "object"
},
"type": [
"null",
"array"
]
}
},
"required": [
"vessels",
"total",
"truncated",
"attribution"
],
"type": "object"
}
},
{
"description": "Where Open Waters AIS is hearing AIS right now: sources with their current delay, stations, freshness, and vessel counts. Pass a bounding box to learn which stations cover it and how many vessels are in it, or a station id for that station's numbers. Vessel counts cover the last 30 minutes; max_age widens them, to 7d for the last week or all for every vessel the network has heard. Call this before saying a region has no traffic.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"bbox": {
"additionalProperties": false,
"description": "report the stations covering this box and the vessels currently in it",
"properties": {
"max_lat": {
"description": "north edge, degrees, -90 to 90",
"type": "number"
},
"max_lon": {
"description": "east edge, degrees, -180 to 180",
"type": "number"
},
"min_lat": {
"description": "south edge, degrees, -90 to 90",
"type": "number"
},
"min_lon": {
"description": "west edge, degrees, -180 to 180",
"type": "number"
}
},
"required": [
"min_lat",
"min_lon",
"max_lat",
"max_lon"
],
"type": [
"null",
"object"
]
},
"max_age": {
"description": "count vessels heard within this long, network-wide and in bbox, instead of the last 30 minutes: a duration such as 6h, 24h, or 7d, or all for every vessel the network has heard",
"type": "string"
},
"station": {
"description": "a station id from an earlier result, for that station's numbers",
"type": "string"
}
},
"type": "object"
},
"name": "get_coverage",
"outputSchema": {
"additionalProperties": false,
"properties": {
"area": {
"additionalProperties": false,
"properties": {
"bbox": {
"additionalProperties": false,
"properties": {
"max_lat": {
"description": "north edge, degrees, -90 to 90",
"type": "number"
},
"max_lon": {
"description": "east edge, degrees, -180 to 180",
"type": "number"
},
"min_lat": {
"description": "south edge, degrees, -90 to 90",
"type": "number"
},
"min_lon": {
"description": "west edge, degrees, -180 to 180",
"type": "number"
}
},
"required": [
"min_lat",
"min_lon",
"max_lat",
"max_lon"
],
"type": "object"
},
"stations": {
"description": "stations whose heard extent overlaps the box",
"items": {
"additionalProperties": false,
"properties": {
"bbox": {
"additionalProperties": false,
"description": "extent of the positions this station has heard",
"properties": {
"max_lat": {
"description": "north edge, degrees, -90 to 90",
"type": "number"
},
"max_lon": {
"description": "east edge, degrees, -180 to 180",
"type": "number"
},
"min_lat": {
"description": "south edge, degrees, -90 to 90",
"type": "number"
},
"min_lon": {
"description": "west edge, degrees, -180 to 180",
"type": "number"
}
},
"required": [
"min_lat",
"min_lon",
"max_lat",
"max_lon"
],
"type": [
"null",
"object"
]
},
"events_24h": {
"type": "integer"
},
"last_age_s": {
"type": "integer"
},
"source": {
"type": "string"
},
"station": {
"type": "string"
},
"vessels": {
"description": "distinct vessels heard in the last 30 minutes",
"type": "integer"
}
},
"required": [
"station",
"source",
"vessels",
"events_24h",
"last_age_s"
],
"type": "object"
},
"type": [
"null",
"array"
]
},
"vessels": {
"description": "vessels whose last known position is inside the box, heard in the last 30 minutes or within max_age",
"type": "integer"
}
},
"required": [
"bbox",
"vessels",
"stations"
],
"type": [
"null",
"object"
]
},
"events_per_second": {
"type": "number"
},
"note": {
"type": "string"
},
"sources": {
"items": {
"additionalProperties": false,
"properties": {
"attribution": {
"type": "string"
},
"delay": {
"additionalProperties": false,
"description": "seconds from broadcast to arrival over the last position reports from this source",
"properties": {
"p50": {
"description": "median delay in seconds",
"type": "number"
},
"p99": {
"description": "99th percentile delay in seconds",
"type": "number"
}
},
"required": [
"p50",
"p99"
],
"type": [
"null",
"object"
]
},
"description": {
"type": "string"
},
"events_24h": {
"type": "integer"
},
"kind": {
"type": "string"
},
"last_age_s": {
"description": "seconds since the source last delivered a message",
"type": "integer"
},
"license": {
"type": "string"
},
"vessels": {
"description": "distinct vessels heard from this source in the last 30 minutes",
"type": "integer"
},
"vessels_exclusive": {
"description": "of those, heard by no other source",
"type": "integer"
}
},
"required": [
"kind",
"vessels",
"vessels_exclusive",
"events_24h",
"last_age_s",
"license",
"attribution"
],
"type": "object"
},
"type": [
"null",
"array"
]
},
"station": {
"additionalProperties": false,
"properties": {
"bbox": {
"additionalProperties": false,
"description": "extent of the positions this station has heard",
"properties": {
"max_lat": {
"description": "north edge, degrees, -90 to 90",
"type": "number"
},
"max_lon": {
"description": "east edge, degrees, -180 to 180",
"type": "number"
},
"min_lat": {
"description": "south edge, degrees, -90 to 90",
"type": "number"
},
"min_lon": {
"description": "west edge, degrees, -180 to 180",
"type": "number"
}
},
"required": [
"min_lat",
"min_lon",
"max_lat",
"max_lon"
],
"type": [
"null",
"object"
]
},
"events_24h": {
"type": "integer"
},
"last_age_s": {
"type": "integer"
},
"source": {
"type": "string"
},
"station": {
"type": "string"
},
"vessels": {
"description": "distinct vessels heard in the last 30 minutes",
"type": "integer"
}
},
"required": [
"station",
"source",
"vessels",
"events_24h",
"last_age_s"
],
"type": [
"null",
"object"
]
},
"stations": {
"additionalProperties": false,
"properties": {
"active": {
"description": "heard within the last 5 minutes",
"type": "integer"
},
"total": {
"type": "integer"
}
},
"required": [
"total",
"active"
],
"type": "object"
},
"summary": {
"type": "string"
},
"time": {
"type": "string"
},
"vessels": {
"additionalProperties": false,
"properties": {
"active": {
"description": "vessels heard in the last 30 minutes",
"type": "integer"
},
"heard": {
"description": "vessels heard within max_age; present when max_age is given",
"type": [
"null",
"integer"
]
},
"new": {
"description": "vessels first heard within max_age; present when max_age is a duration",
"type": [
"null",
"integer"
]
},
"total": {
"description": "every vessel the network has heard",
"type": "integer"
},
"with_position": {
"description": "of the active vessels, those with a position",
"type": "integer"
}
},
"required": [
"total",
"active",
"with_position"
],
"type": "object"
}
},
"required": [
"time",
"summary",
"sources",
"stations",
"vessels",
"events_per_second"
],
"type": "object"
}
},
{
"description": "The positions heard from one vessel over a time range, oldest first, with speed, course, and navigational status. Positions implying an impossible speed for the vessel are left out. Use for where a ship was yesterday, when it left port, or its route today. Anonymous and personal calls reach the last 48 hours; feeder and commercial tokens reach further, up to a year per call. By default the positions are spread evenly over the range; interval_minutes sets the spacing.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"from": {
"description": "start, RFC 3339 UTC; default 24 hours before to. Anonymous and personal calls reach back 48 hours; feeder and commercial tokens reach the archive, up to 366 days per call",
"type": "string"
},
"interval_minutes": {
"description": "at most one position per this many minutes; by default the limit is spread over the range at a round spacing, reported as interval_s",
"type": "integer"
},
"limit": {
"description": "positions to return: default 50, maximum 200; when more match, the newest are kept",
"type": "integer"
},
"mmsi": {
"description": "the vessel's MMSI; use search_vessels_by_name first when you only have a name",
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"to": {
"description": "end, RFC 3339 UTC; default now",
"type": "string"
}
},
"required": [
"mmsi"
],
"type": "object"
},
"name": "get_vessel_track",
"outputSchema": {
"additionalProperties": false,
"properties": {
"attribution": {
"additionalProperties": {
"type": "string"
},
"description": "credit line per source kind in the positions, to show with the data",
"type": "object"
},
"from": {
"description": "start of the range covered, after clamping to what the caller can reach: the last 48 hours, or the archive for feeder and commercial tokens",
"type": "string"
},
"interval_s": {
"description": "at most one position per this many seconds; 0 is every position heard",
"type": "integer"
},
"mmsi": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"name": {
"type": "string"
},
"positions": {
"description": "oldest first",
"items": {
"additionalProperties": false,
"properties": {
"cog": {
"description": "course over ground, degrees true",
"type": [
"null",
"number"
]
},
"heading": {
"description": "true heading, degrees",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"nav_status": {
"description": "AIS navigational status code",
"maximum": 255,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"nav_status_name": {
"type": "string"
},
"seen": {
"description": "time of the report, RFC 3339 UTC",
"type": "string"
},
"sog": {
"description": "speed over ground, knots",
"type": [
"null",
"number"
]
}
},
"required": [
"seen",
"lat",
"lon"
],
"type": "object"
},
"type": [
"null",
"array"
]
},
"to": {
"type": "string"
},
"truncated": {
"description": "true when more positions matched than were returned; the newest were kept, so set from later or raise interval_minutes",
"type": "boolean"
}
},
"required": [
"mmsi",
"from",
"to",
"interval_s",
"positions",
"truncated",
"attribution"
],
"type": "object"
}
},
{
"description": "Last known position and particulars of specific vessels by MMSI (Maritime Mobile Service Identity) or IMO number: 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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"imo": {
"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"
]
},
"mmsi": {
"description": "MMSIs to look up; anonymous calls may pass 10 identifiers per call, a personal token 50",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
}
},
"type": "object"
},
"name": "get_vessels",
"outputSchema": {
"additionalProperties": false,
"properties": {
"attribution": {
"additionalProperties": {
"type": "string"
},
"description": "credit line per source kind in the rows, to show with the data",
"type": "object"
},
"total": {
"description": "vessels matched before the limit was applied",
"type": "integer"
},
"truncated": {
"description": "true when total exceeds the rows returned; narrow the query or raise limit",
"type": "boolean"
},
"unknown_imo": {
"description": "requested IMO numbers matching no vessel the network has heard",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
},
"unknown_mmsi": {
"description": "requested MMSIs matching no vessel the network has heard",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
},
"vessels": {
"items": {
"additionalProperties": false,
"properties": {
"age_s": {
"description": "seconds since seen",
"type": "integer"
},
"beam": {
"description": "beam, metres",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"bearing": {
"description": "degrees true from the search centre to the vessel (find_vessels_near)",
"type": [
"null",
"number"
]
},
"callsign": {
"type": "string"
},
"cog": {
"description": "course over ground, degrees true",
"type": [
"null",
"number"
]
},
"destination": {
"description": "destination as typed by the crew: a port name, a UN/LOCODE, or nothing useful",
"type": "string"
},
"distance_nm": {
"description": "nautical miles from the search centre (find_vessels_near)",
"type": [
"null",
"number"
]
},
"draught": {
"description": "maximum static draught, metres",
"type": [
"null",
"number"
]
},
"eta": {
"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"
},
"flag": {
"description": "ISO 3166-1 alpha-2 code of the flag state, from the MMSI's maritime identification digits",
"type": "string"
},
"heading": {
"description": "true heading, degrees",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"imo": {
"description": "IMO number, once the vessel's static data has been heard",
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"kind": {
"description": "vessel, aton (aid to navigation), base (base station), or sar (search and rescue aircraft)",
"type": "string"
},
"lat": {
"description": "latitude of the last position, degrees; absent when no position has been heard",
"type": [
"null",
"number"
]
},
"length": {
"description": "overall length, metres",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"lon": {
"description": "longitude of the last position, degrees",
"type": [
"null",
"number"
]
},
"mmsi": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"name": {
"description": "name from the vessel's static data, when heard",
"type": "string"
},
"nav_status": {
"description": "AIS navigational status code",
"maximum": 255,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"nav_status_name": {
"type": "string"
},
"particulars": {
"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"
},
"callsign": {
"description": "call sign as registered; the callsign in the vessel's own properties is the one AIS reports",
"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"
]
},
"provenance": {
"additionalProperties": {
"type": "string"
},
"description": "the source of each particulars field, by the field's name; values are keys of sources (get_vessels)",
"type": "object"
},
"seen": {
"description": "time of the last message heard, RFC 3339 UTC",
"type": "string"
},
"sog": {
"description": "speed over ground, knots",
"type": [
"null",
"number"
]
},
"source": {
"description": "feed or station kind the last message came from",
"type": "string"
},
"sources": {
"additionalProperties": {
"additionalProperties": false,
"properties": {
"credit": {
"description": "display credit for the source",
"type": "string"
},
"license": {
"type": "string"
},
"url": {
"description": "the source's page for this vessel, or its public search when the source keeps no per-vessel pages",
"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"
},
"station": {
"type": "string"
},
"type": {
"description": "ITU ship and cargo type code, or the aid type for an aton",
"maximum": 255,
"minimum": 0,
"type": "integer"
},
"type_name": {
"type": "string"
}
},
"required": [
"mmsi",
"kind",
"seen",
"age_s",
"source",
"station"
],
"type": "object"
},
"type": [
"null",
"array"
]
}
},
"required": [
"vessels",
"total",
"truncated",
"attribution"
],
"type": "object"
}
},
{
"description": "Vessels whose name contains the text, case-insensitive, among every vessel the network has heard, each with its last known position. Use to turn a name into an MMSI, then get_vessels or find_vessels_near for detail. An optional bounding box narrows the search.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"bbox": {
"additionalProperties": false,
"description": "only vessels whose last position is inside this box",
"properties": {
"max_lat": {
"description": "north edge, degrees, -90 to 90",
"type": "number"
},
"max_lon": {
"description": "east edge, degrees, -180 to 180",
"type": "number"
},
"min_lat": {
"description": "south edge, degrees, -90 to 90",
"type": "number"
},
"min_lon": {
"description": "west edge, degrees, -180 to 180",
"type": "number"
}
},
"required": [
"min_lat",
"min_lon",
"max_lat",
"max_lon"
],
"type": [
"null",
"object"
]
},
"flag": {
"description": "only vessels flying this flag: ISO 3166-1 alpha-2, e.g. NO, FI, MH",
"type": "string"
},
"limit": {
"description": "rows to return: default 50, maximum 200",
"type": "integer"
},
"name": {
"description": "text to find in the vessel name, at least 2 characters, case-insensitive",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "search_vessels_by_name",
"outputSchema": {
"additionalProperties": false,
"properties": {
"attribution": {
"additionalProperties": {
"type": "string"
},
"description": "credit line per source kind in the rows, to show with the data",
"type": "object"
},
"total": {
"description": "vessels matched before the limit was applied",
"type": "integer"
},
"truncated": {
"description": "true when total exceeds the rows returned; narrow the query or raise limit",
"type": "boolean"
},
"unknown_imo": {
"description": "requested IMO numbers matching no vessel the network has heard",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
},
"unknown_mmsi": {
"description": "requested MMSIs matching no vessel the network has heard",
"items": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"type": [
"null",
"array"
]
},
"vessels": {
"items": {
"additionalProperties": false,
"properties": {
"age_s": {
"description": "seconds since seen",
"type": "integer"
},
"beam": {
"description": "beam, metres",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"bearing": {
"description": "degrees true from the search centre to the vessel (find_vessels_near)",
"type": [
"null",
"number"
]
},
"callsign": {
"type": "string"
},
"cog": {
"description": "course over ground, degrees true",
"type": [
"null",
"number"
]
},
"destination": {
"description": "destination as typed by the crew: a port name, a UN/LOCODE, or nothing useful",
"type": "string"
},
"distance_nm": {
"description": "nautical miles from the search centre (find_vessels_near)",
"type": [
"null",
"number"
]
},
"draught": {
"description": "maximum static draught, metres",
"type": [
"null",
"number"
]
},
"eta": {
"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"
},
"flag": {
"description": "ISO 3166-1 alpha-2 code of the flag state, from the MMSI's maritime identification digits",
"type": "string"
},
"heading": {
"description": "true heading, degrees",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"imo": {
"description": "IMO number, once the vessel's static data has been heard",
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"kind": {
"description": "vessel, aton (aid to navigation), base (base station), or sar (search and rescue aircraft)",
"type": "string"
},
"lat": {
"description": "latitude of the last position, degrees; absent when no position has been heard",
"type": [
"null",
"number"
]
},
"length": {
"description": "overall length, metres",
"maximum": 65535,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"lon": {
"description": "longitude of the last position, degrees",
"type": [
"null",
"number"
]
},
"mmsi": {
"maximum": 4294967295,
"minimum": 0,
"type": "integer"
},
"name": {
"description": "name from the vessel's static data, when heard",
"type": "string"
},
"nav_status": {
"description": "AIS navigational status code",
"maximum": 255,
"minimum": 0,
"type": [
"null",
"integer"
]
},
"nav_status_name": {
"type": "string"
},
"particulars": {
"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"
},
"callsign": {
"description": "call sign as registered; the callsign in the vessel's own properties is the one AIS reports",
"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"
]
},
"provenance": {
"additionalProperties": {
"type": "string"
},
"description": "the source of each particulars field, by the field's name; values are keys of sources (get_vessels)",
"type": "object"
},
"seen": {
"description": "time of the last message heard, RFC 3339 UTC",
"type": "string"
},
"sog": {
"description": "speed over ground, knots",
"type": [
"null",
"number"
]
},
"source": {
"description": "feed or station kind the last message came from",
"type": "string"
},
"sources": {
"additionalProperties": {
"additionalProperties": false,
"properties": {
"credit": {
"description": "display credit for the source",
"type": "string"
},
"license": {
"type": "string"
},
"url": {
"description": "the source's page for this vessel, or its public search when the source keeps no per-vessel pages",
"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"
},
"station": {
"type": "string"
},
"type": {
"description": "ITU ship and cargo type code, or the aid type for an aton",
"maximum": 255,
"minimum": 0,
"type": "integer"
},
"type_name": {
"type": "string"
}
},
"required": [
"mmsi",
"kind",
"seen",
"age_s",
"source",
"station"
],
"type": "object"
},
"type": [
"null",
"array"
]
}
},
"required": [
"vessels",
"total",
"truncated",
"attribution"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:d676d577c175506b4bf39e0396710723821eb014d881631c9b114d300b553c1d | sha256sum