Screen any vessel by IMO for sanctions, ownership opacity and vetting grade. Keyless check included.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. `Bearer <API key>` unlocks the full screening record, batches, voyage scoring and usage; self-serve at https://arcnautical.com/get-a-key?from=mcp. check_vessel and find_port work with no header.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Screen one vessel by IMO number against OFAC SDN, EU, UN, UK OFSI and OpenSanctions, with an ownership-opacity score and an A–E vetting grade from port-state-control history. Works with no API key. Rate-limited to 100 requests per hour per IP. Returns the VERDICT SUMMARY only; for every sanctions match with its source list and confidence class use screen_vessel (needs a key).
Seven-digit IMO number of the vessel
Screen one vessel by IMO number against OFAC SDN, EU, UN, UK OFSI and OpenSanctions, with an ownership-opacity score and an A–E vetting grade from port-state-control history. Works with no API key. Rate-limited to 100 requests per hour per IP. Returns the VERDICT SUMMARY only; for every sanctions match with its source list and confidence class use screen_vessel (needs a key).
| Argument | Type | Description |
|---|---|---|
| imo* | string | Seven-digit IMO number of the vessel |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"imo"
],
"properties": {
"imo": {
"type": "string",
"pattern": "^\\d{7}$",
"description": "Seven-digit IMO number of the vessel"
}
},
"additionalProperties": false
}Resolve a port name, country or partial UN/LOCODE to the LOCODEs the routing engine knows. Routes are addressed by LOCODE, so call this before score_voyage rather than guessing a code. Works with no API key.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum matches to return (default 5) |
| query* | string | Port name, country, or LOCODE fragment, e.g. "rotterdam", "NLRTM", "Piraeus" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum matches to return (default 5)"
},
"query": {
"type": "string",
"minLength": 2,
"description": "Port name, country, or LOCODE fragment, e.g. \"rotterdam\", \"NLRTM\", \"Piraeus\""
}
},
"additionalProperties": false
}Fetch a stored screening record by id — the audit copy, retained ten years. Needs ARCNAUTICAL_API_KEY.
| Argument | Type | Description |
|---|---|---|
| id* | string | Screening id returned by screen_vessel or in a batch item |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Screening id returned by screen_vessel or in a batch item"
}
},
"additionalProperties": false
}Live and test usage, remaining allowance, reset time, batch limits and monitor capacity for the configured key.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Route risk between two ports (UN/LOCODEs): a 0–100 score, risk level, the signals driving it (war-risk areas, piracy, chokepoints, weather, sanctions exposure of transited EEZs), confidence and any missing sources. Resolve port names with find_port first. Needs ARCNAUTICAL_API_KEY; 10,000 assessments a month are included with a self-serve key.
| Argument | Type | Description |
|---|---|---|
| origin* | string | Origin UN/LOCODE, e.g. NLRTM |
| dwt_tonnes | number | Deadweight in tonnes; used for chokepoint and draught constraints |
| destination* | string | Destination UN/LOCODE, e.g. CNSHA |
| speed_knots | number | Planned service speed, 8-25 knots; sets transit time through each risk area |
| vessel_type | string | Vessel class; changes which threat signals weigh most (default: general) |
| load_condition | string | laden or ballast; affects exposure on the transit |
| customer_reference | string | Your own reference (voyage id, fixture); echoed on the assessment |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"origin",
"destination"
],
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{5}$",
"description": "Origin UN/LOCODE, e.g. NLRTM"
},
"dwt_tonnes": {
"type": "number",
"maximum": 600000,
"minimum": 1,
"description": "Deadweight in tonnes; used for chokepoint and draught constraints"
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{5}$",
"description": "Destination UN/LOCODE, e.g. CNSHA"
},
"speed_knots": {
"type": "number",
"maximum": 25,
"minimum": 8,
"description": "Planned service speed, 8-25 knots; sets transit time through each risk area"
},
"vessel_type": {
"enum": [
"container",
"bulk",
"tanker",
"lng",
"general"
],
"type": "string",
"description": "Vessel class; changes which threat signals weigh most (default: general)"
},
"load_condition": {
"enum": [
"laden",
"ballast"
],
"type": "string",
"description": "laden or ballast; affects exposure on the transit"
},
"customer_reference": {
"type": "string",
"maxLength": 128,
"description": "Your own reference (voyage id, fixture); echoed on the assessment"
}
},
"additionalProperties": false
}The authenticated screening record for one vessel: every sanctions match with its source list, programme and confidence class, ownership opacity, the graded vetting factors, per-source freshness, and a retained record id. Needs ARCNAUTICAL_API_KEY. Metered: a new self-serve key includes a one-time free allowance of live screenings; get_usage reports what is left. The same vessel asked again on the same day replays the stored record free. If the result is INCOMPLETE for identity, call again with vessel_name.
| Argument | Type | Description |
|---|---|---|
| imo* | string | Seven-digit IMO number of the vessel |
| vessel_name | string | Only when a previous screen was INCOMPLETE for identity; a name you can confirm |
| include_vetting | boolean | false skips the vetting grade for a faster sanctions-only screen |
| customer_reference | string | Your own reference (order id, voyage id); echoed on the record |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"imo"
],
"properties": {
"imo": {
"type": "string",
"pattern": "^\\d{7}$",
"description": "Seven-digit IMO number of the vessel"
},
"vessel_name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Only when a previous screen was INCOMPLETE for identity; a name you can confirm"
},
"include_vetting": {
"type": "boolean",
"description": "false skips the vetting grade for a faster sanctions-only screen"
},
"customer_reference": {
"type": "string",
"maxLength": 128,
"description": "Your own reference (order id, voyage id); echoed on the record"
}
},
"additionalProperties": false
}Batch-screen a list of IMO numbers and wait for the results (up to two minutes). Returns one verdict per hull plus the batch status. Needs ARCNAUTICAL_API_KEY. Each hull spends one screening unit unless it was already screened today.
| Argument | Type | Description |
|---|---|---|
| imos* | array | Up to 50 seven-digit IMO numbers |
| include_vetting | boolean | false skips the vetting grade for a faster sanctions-only screen |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"imos"
],
"properties": {
"imos": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{7}$",
"description": "Seven-digit IMO number of the vessel"
},
"maxItems": 50,
"minItems": 1,
"description": "Up to 50 seven-digit IMO numbers"
},
"include_vetting": {
"type": "boolean",
"description": "false skips the vetting grade for a faster sanctions-only screen"
}
},
"additionalProperties": false
}