mcp
Screen any vessel by IMO for sanctions, ownership opacity and vetting grade. Keyless check included.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"@arcnautical/mcp"
]
}
}
}실행 가능한 패키지
0.2.1stdio원격 엔드포인트
https://mcp.arcnautical.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (7)
🟢check_vessel(imo)
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).
입력 스키마
{
"type": "object",
"properties": {
"imo": {
"type": "string",
"pattern": "^\\d{7}$",
"description": "Seven-digit IMO number of the vessel"
}
},
"required": [
"imo"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"imo": {
"type": "string",
"description": "The seven-digit IMO number screened"
},
"sanctions": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "RED | AMBER | GREEN | INCOMPLETE"
},
"detail": {
"type": "string",
"description": "One sentence explaining the status"
},
"coverageComplete": {
"type": "boolean",
"description": "false when a supplementary list was unavailable — re-screen before relying on a GREEN"
}
},
"required": [
"status"
],
"additionalProperties": true
},
"ownership": {
"type": "object",
"properties": {
"opacity": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
},
"vetting": {
"type": "object",
"properties": {
"grade": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
},
"status": {
"type": "string"
}
},
"additionalProperties": true
},
"assessed": {
"type": "boolean",
"description": "false means ownership and vetting are defaults, not findings"
},
"checkedAt": {
"type": "string",
"description": "ISO-8601 time the sources were read; designations change daily"
},
"fullReport": {
"type": "string",
"description": "Human-readable report URL for this hull"
},
"rate_limit": {
"type": "object",
"properties": {
"limit": {
"type": [
"number",
"null"
]
},
"remaining": {
"type": [
"number",
"null"
]
},
"reset": {
"type": [
"string",
"null"
]
}
},
"required": [
"limit",
"remaining",
"reset"
],
"additionalProperties": false,
"description": "Keyless allowance for the caller's address"
}
},
"required": [
"imo",
"sanctions",
"checkedAt",
"rate_limit"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢find_port(query, limit)
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.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"description": "Port name, country, or LOCODE fragment, e.g. \"rotterdam\", \"NLRTM\", \"Piraeus\""
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Maximum matches to return (default 5)"
}
},
"required": [
"query"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"ports": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locode": {
"type": "string",
"description": "UN/LOCODE, e.g. NLRTM"
},
"name": {
"type": "string"
},
"country": {
"type": "string"
}
},
"required": [
"locode",
"name"
],
"additionalProperties": true
},
"description": "Best matches first"
}
},
"required": [
"ports"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪screen_vessel(imo, vessel_name, customer_reference, include_vetting)
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: 5,000 live screenings a month are included with a self-serve key. 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.
입력 스키마
{
"type": "object",
"properties": {
"imo": {
"type": "string",
"pattern": "^\\d{7}$",
"description": "Seven-digit IMO number of the vessel"
},
"vessel_name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Only when a previous screen was INCOMPLETE for identity; a name you can confirm"
},
"customer_reference": {
"type": "string",
"maxLength": 128,
"description": "Your own reference (order id, voyage id); echoed on the record"
},
"include_vetting": {
"type": "boolean",
"description": "false skips the vetting grade for a faster sanctions-only screen"
}
},
"required": [
"imo"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Screening record id, retained ten years"
},
"imo": {
"type": "string"
},
"sanctions": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "RED | AMBER | GREEN | INCOMPLETE"
},
"detail": {
"type": "string"
}
},
"additionalProperties": true
},
"ownership": {
"type": "object",
"properties": {
"opacity": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
},
"vetting": {
"type": "object",
"properties": {
"grade": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
}
},
"additionalProperties": true
},
"screened_at": {
"type": "string",
"description": "ISO-8601 time the sources were read"
},
"vessel_name": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢screen_vessels(imos, include_vetting)
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.
입력 스키마
{
"type": "object",
"properties": {
"imos": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{7}$",
"description": "Seven-digit IMO number of the vessel"
},
"minItems": 1,
"maxItems": 50,
"description": "Up to 50 seven-digit IMO numbers"
},
"include_vetting": {
"type": "boolean",
"description": "false skips the vetting grade for a faster sanctions-only screen"
}
},
"required": [
"imos"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"batch": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string",
"description": "queued | running | completed | partial | failed"
}
},
"additionalProperties": true,
"description": "The batch as last read"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"imo": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"screening_id": {
"type": [
"string",
"null"
]
},
"result_body": {
"anyOf": [
{
"type": "object",
"properties": {
"sanctions": {
"type": "object",
"properties": {
"status": {
"type": "string"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
"description": "One row per hull"
}
},
"required": [
"batch",
"items"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_screening(id)
Fetch a stored screening record by id — the audit copy, retained ten years. Needs ARCNAUTICAL_API_KEY.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Screening id returned by screen_vessel or in a batch item"
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Screening record id, retained ten years"
},
"imo": {
"type": "string"
},
"sanctions": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "RED | AMBER | GREEN | INCOMPLETE"
},
"detail": {
"type": "string"
}
},
"additionalProperties": true
},
"ownership": {
"type": "object",
"properties": {
"opacity": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
},
"vetting": {
"type": "object",
"properties": {
"grade": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
}
},
"additionalProperties": true
},
"screened_at": {
"type": "string",
"description": "ISO-8601 time the sources were read"
},
"vessel_name": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢score_voyage(origin, destination, vessel_type, load_condition, speed_knots, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{5}$",
"description": "Origin UN/LOCODE, e.g. NLRTM"
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{5}$",
"description": "Destination UN/LOCODE, e.g. CNSHA"
},
"vessel_type": {
"type": "string",
"enum": [
"container",
"bulk",
"tanker",
"lng",
"general"
],
"description": "Vessel class; changes which threat signals weigh most (default: general)"
},
"load_condition": {
"type": "string",
"enum": [
"laden",
"ballast"
],
"description": "laden or ballast; affects exposure on the transit"
},
"speed_knots": {
"type": "number",
"minimum": 8,
"maximum": 25,
"description": "Planned service speed, 8-25 knots; sets transit time through each risk area"
},
"dwt_tonnes": {
"type": "number",
"minimum": 1,
"maximum": 600000,
"description": "Deadweight in tonnes; used for chokepoint and draught constraints"
},
"customer_reference": {
"type": "string",
"maxLength": 128,
"description": "Your own reference (voyage id, fixture); echoed on the assessment"
}
},
"required": [
"origin",
"destination"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Assessment id"
},
"score": {
"type": "number",
"description": "0-100, higher is riskier"
},
"risk_level": {
"type": "string",
"description": "low | moderate | elevated | high | severe"
},
"confidence": {
"type": "number",
"description": "0-1"
},
"missing_sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Signals that could not be read for this assessment"
},
"route": {
"type": "object",
"properties": {
"distance_nm": {
"type": "number"
}
},
"additionalProperties": true
},
"signals": {}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_usage
Live and test usage, remaining allowance, reset time, batch limits and monitor capacity for the configured key.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"environment": {
"type": "string",
"description": "live | test"
},
"assessments": {
"type": "object",
"properties": {},
"additionalProperties": true,
"description": "Allowance, used, remaining and reset per environment"
},
"screenings": {
"type": "object",
"properties": {},
"additionalProperties": true
},
"limits": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}커뮤니티
증거