Skip to main content
Glama

@arcnautical/mcp

An MCP server for the ArcNautical API: screen any commercial vessel by IMO number for sanctions, ownership opacity and a vetting grade — from Claude, ChatGPT, Cursor, VS Code, Windsurf or any MCP client.

Two tools need no API key at all. Install it, ask "is IMO 9274446 sanctioned?", get the answer.

IMO 9274446 HS STAR: sanctions RED — 4 confirmed matches on vessel identifier.
Ownership opacity MEDIUM. Vetting grade E (unacceptable). Checked 2026-09-12T08:10:40Z.

Install

Requires Node 18+. No install step — every client below runs it with npx.

Claude Desktopclaude_desktop_config.json:

{
  "mcpServers": {
    "arcnautical": {
      "command": "npx",
      "args": ["-y", "@arcnautical/mcp"]
    }
  }
}

Claude Code

claude mcp add arcnautical -- npx -y @arcnautical/mcp

Cursor / Windsurf / VS Code — same command / args shape in the client's MCP settings.

To unlock the full record, batches and voyage scoring, add an API key to the env block:

{
  "mcpServers": {
    "arcnautical": {
      "command": "npx",
      "args": ["-y", "@arcnautical/mcp"],
      "env": { "ARCNAUTICAL_API_KEY": "arc_live_…" }
    }
  }
}

Keys are self-serve at https://arcnautical.com/arcnautical.html#/developer-api — no approval step. A key includes 5,000 vessel screenings and 10,000 voyage assessments a month.

Related MCP server: Supply Chain Disruption Monitor

Tools

Tool

Key?

What it does

check_vessel

no

Sanctions status (OFAC SDN, EU, UN, UK OFSI, OpenSanctions), ownership-opacity score, A–E vetting grade for one IMO. 100/hour per IP.

find_port

no

Resolve a port name or country to UN/LOCODEs — call before score_voyage.

screen_vessel

yes

The full screening record: every match with its source list, programme and confidence class, the graded vetting factors, per-source freshness, a retained record id. Same hull asked again today replays free.

screen_vessels

yes

Batch up to 50 IMOs and wait for the results.

get_screening

yes

Retrieve a stored record by id (retained ten years).

score_voyage

yes

Route risk between two LOCODEs: score, level, drivers, confidence, missing sources.

get_usage

yes

Remaining allowance and limits for the configured key.

Reading a verdict

  • RED — confirmed match on the vessel identifier. AMBER — possible match, review it. GREEN — no match against the sources reached. INCOMPLETE — a core source could not be read; never present it as clear.

  • coverage_complete: false on a GREEN means one supplementary list was unavailable: re-screen before relying on it.

  • assessed: false means ownership and vetting are defaults, not findings.

  • The keyless check matches the vessel's current name and identifiers only. A hull renamed after a designation can read GREEN there; screen_vessel covers that case.

  • Designations change daily. Quote the checkedAt / screened_at time with any answer.

Idempotency

Every resource-creating call sends an Idempotency-Key derived from the question — the hull and the UTC day — not from the attempt. Asking about the same vessel twice in a day returns the stored record and spends nothing. The API's docs measured 42% of one integration's monthly screenings as same-day repeats billed only because their client generated a random key per call; this server does not do that.

Environment

Variable

Default

Purpose

ARCNAUTICAL_API_KEY

unset

Enables the keyed tools.

ARCNAUTICAL_BASE_URL

https://arcnautical.com

Override for testing.

Development

npm install
npm test        # builds, then drives dist/cli.js over stdio against the live keyless endpoints

MIT © ArcNautical

Available Tools

7 tools
check_vesselCheck a vessel (no key)A
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
imoYesSeven-digit IMO number of the vessel

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent/open-world profile, and the description adds genuinely new behavioral facts: a 100 req/hour per-IP rate limit, no-key operation, and that only the VERDICT SUMMARY is returned. That is more than the structured fields convey.

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

Conciseness5/5

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

Four front-loaded sentences, each carrying distinct load: what it screens, what it scores, the no-key/rate-limit constraint, and the output scope plus sibling routing. No filler.

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

Completeness5/5

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

With no output schema, the description compensates by stating the return is VERDICT SUMMARY only and pointing to the tool that returns full matches. Auth, rate limit, and scope are all covered, so nothing needed to invoke it correctly is missing.

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 coverage is 100% and the single parameter carries its own pattern and description, so the schema does the heavy lifting. The description restates 'by IMO number' but adds no format or validation detail beyond it, matching the baseline for fully-documented params.

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 (screen/check) and resource (one vessel by IMO number) and lists exactly which sanctions lists are consulted. It explicitly distinguishes itself from the sibling screen_vessel, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit when-to-use condition ('works with no API key') and names the alternative (screen_vessel) plus the condition that selects it (need for every match with source list and confidence class). Nothing is left to inference.

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

find_portFind a port / UN/LOCODE (no key)A
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum matches to return (default 5)
queryYesPort name, country, or LOCODE fragment, e.g. "rotterdam", "NLRTM", "Piraeus"

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds a genuinely useful behavioral fact beyond them — 'Works with no API key' — which tells the agent about auth requirements the annotations do not express.

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

Conciseness5/5

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

Three short sentences, each earning its place: purpose, dependency ordering, and auth. The purpose statement is front-loaded and nothing is redundant.

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?

For a simple two-parameter lookup with no output schema, the description gives enough: it says it returns LOCODEs (plural, matching the search nature) and where they are consumed. It stops short of describing return shape or match ranking, but nothing critical to a correct call is missing.

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% for both parameters (query and limit), so the schema already carries the parameter documentation. The description restates the accepted query forms (name, country, partial LOCODE) but adds no new syntax or constraint detail, so the 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?

Specific verb 'Resolve' plus a precise resource (port name, country, or partial UN/LOCODE) and a clear output ('the LOCODEs the routing engine knows'). It is unambiguous and distinct from the screening/vessel siblings, which share no verb or object with it.

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?

Gives an explicit sequencing rule: 'call this before score_voyage rather than guessing a code', naming the sibling and the condition that selects this tool. It does not enumerate when-not-to-use cases, but the dependency rationale is clear enough to route correctly.

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

get_screeningRetrieve a screening record (API key)A
Read-onlyIdempotent

Fetch a stored screening record by id — the audit copy, retained ten years. Needs ARCNAUTICAL_API_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesScreening id returned by screen_vessel or in a batch item

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the readOnly/idempotent/openWorld annotations, the description discloses two useful operational facts: this returns the retained audit copy with a ten-year retention window, and it requires ARCNAUTICAL_API_KEY. It does not describe the record's contents, but the added auth and retention context is genuine value.

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

Conciseness5/5

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

One sentence, front-loaded with the action, with no redundant or filler text. The auth requirement is appended briefly without bloating the definition.

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?

For a single-parameter read-only lookup, the description covers what it returns (an audit copy), how long it is retained, and how to authenticate. No output schema exists, so a brief note on the record's shape would help, but nothing needed to invoke the tool correctly is missing.

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%, and the id parameter already documents its uuid format and origin ('Screening id returned by screen_vessel or in a batch item'). The description adds nothing beyond 'by id,' so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (fetch) and resource (stored screening record) plus a distinguishing scope detail: 'the audit copy, retained ten years.' This separates it from screen_vessel/screen_vessels, which produce new screenings, but the description never names those siblings, so the differentiation is inferential rather than explicit.

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

Usage Guidelines3/5

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

Usage is only implied: it fetches 'by id,' which suggests it is used once a screening already exists, and the retention note hints at audit/compliance retrieval. No when-not conditions and no named alternatives are given.

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

get_usageUsage and quota (API key)B
Read-onlyIdempotent

Live and test usage, remaining allowance, reset time, batch limits and monitor capacity for the configured key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description usefully adds the scope of what is reported (live vs test, reset time, capacity), but says nothing about refresh cadence, whether the values are cached, or auth requirements for the configured key.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the enumerated data points are the payload, not padding. Slightly list-like, but nothing is wasted.

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 no parameters and no output schema, the description carries the burden of conveying return content, and it does commonly enumerate the reported fields. Complete enough to call correctly; only richer behavioral detail (freshness, units) is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The phrase 'for the configured key' clarifies that key selection is implicit from configuration rather than passed as an argument, which is a small but real addition beyond the empty schema.

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

Purpose4/5

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

The description names the resource (usage/quota data) and enumerates the specific fields returned: live and test usage, remaining allowance, reset time, batch limits, monitor capacity. That lets an agent distinguish it from the screening/vessel/port siblings without opening the schema. It lacks an explicit verb, but the content is unambiguous.

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

Usage Guidelines2/5

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

There is no statement of when to call this tool versus alternatives, nor prerequisites or caveats. The sibling tools are functionally unrelated, so a routing conflict is unlikely, but the description offers no trigger conditions, e.g. before a batch operation or after a quota error.

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

score_voyageScore a voyage route (API key)A
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin UN/LOCODE, e.g. NLRTM
dwt_tonnesNo
destinationYesDestination UN/LOCODE, e.g. CNSHA
speed_knotsNo
vessel_typeNo
load_conditionNo
customer_referenceNo

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=true. The description adds concrete operational context they do not cover: the required API key and a monthly quota of 10,000 assessments, which explains why a scoring call is not purely read-only. It does not describe latency, error behavior, or what 'missing sources' implies operationally.

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

Conciseness4/5

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

Front-loaded with the core purpose and output, followed by the prerequisite and the auth/quota note. Every sentence carries information, though the output enumeration sentence is dense and could be trimmed.

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 no output schema, the description carries the return-value burden and does so well, listing the score, risk level, signals, confidence, and missing sources. It also covers the auth and quota preconditions that an agent needs before calling. The remaining gap is the unexplained optional parameters.

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

Parameters2/5

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

Schema description coverage is only 29%, so the description must compensate for the five undocumented parameters (dwt_tonnes, speed_knots, vessel_type, load_condition, customer_reference). It explains nothing about these — no units, effect on the score, or defaults — and its UN/LOCODE remark merely restates what the schema already documents for origin/destination.

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?

Names a specific verb (score) and resource (voyage route between two ports specified as UN/LOCODEs), and enumerates the actual output (0–100 score, risk level, driving signals, confidence, missing sources). It is clearly distinguishable from vessel-screening siblings like screen_vessel and from the port-only find_port.

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?

Gives an explicit prerequisite and sibling route: 'Resolve port names with find_port first.' It also states the auth precondition (ARCNAUTICAL_API_KEY). It does not describe when NOT to use it or when to prefer get_screening/check_vessel, so it stops short of full routing guidance.

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

screen_vesselScreen a vessel (full record, API key)A
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imoYesSeven-digit IMO number of the vessel
vessel_nameNoOnly when a previous screen was INCOMPLETE for identity; a name you can confirm
include_vettingNofalse skips the vetting grade for a faster sanctions-only screen
customer_referenceNoYour own reference (order id, voyage id); echoed on the record

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the API key requirement, the metering model (5,000 live screenings/month), the free same-day replay semantics, and the INCOMPLETE-for-identity recovery path. This is exactly the cost/auth/idempotency context the readOnlyHint=false, idempotentHint=true annotations cannot express.

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

Conciseness4/5

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

The payload fields, auth, metering and recovery path are all front-loaded into three tight sentences with no filler. It is on the longer side, but every clause carries operational information rather than restating the schema.

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

Completeness5/5

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

With no output schema, the description enumerates the return surface (sanctions matches, source list, programme, confidence class, ownership opacity, vetting factors, freshness, record id) and covers auth, cost and the incomplete-result escape hatch. Nothing needed to call it correctly is missing.

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 the schema already documents imo, vessel_name, include_vetting and customer_reference. The description adds only the conditional re-invocation semantics for vessel_name, which the schema itself already states; include_vetting is unexplained in prose. Baseline 3 is appropriate.

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 ('authenticated screening record for one vessel') and enumerates the record's contents. The singular scope distinguishes it from the plural sibling screen_vessels, so an agent can choose between them without opening a schema.

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?

Gives a concrete operating path: if the result is INCOMPLETE for identity, call again with vessel_name. It also notes the same-day replay is free, implying repeat calls are safe. It never explicitly contrasts itself with get_screening or check_vessel, so it falls short of full when/when-not guidance.

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

screen_vesselsScreen up to 50 vessels (API key)A
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imosYesUp to 50 seven-digit IMO numbers
include_vettingNofalse skips the vetting grade for a faster sanctions-only screen

TDQS

A4.3/5.0
Behavior5/5

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

Goes well past what the annotations convey: it is a blocking call ('wait for the results, up to two minutes'), it consumes quota ('each hull spends one screening unit'), that consumption is waived for hulls already screened today (explaining idempotentHint), and it requires ARCNAUTICAL_API_KEY. This is exactly the billing and latency context an agent must know before invoking.

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

Conciseness5/5

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

Three sentences, zero filler, and front-loaded: what it does, what comes back, then the two constraints (auth key, unit cost). Each sentence carries distinct information.

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

Completeness5/5

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

With no output schema, the description still tells the agent the return shape (one verdict per hull plus batch status) and the timeout bound. Auth, cost, and idempotency behavior are all covered, leaving nothing material for correct invocation missing.

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 the imos array and include_vetting toggle are already documented with patterns and semantics. The description reinforces per-hull cost and one-verdict-per-hull but adds no syntax or format detail beyond the schema, so the 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 ('Batch-screen a list of IMO numbers') and pins the scope ('up to 50', one verdict per hull), which cleanly separates it from the singular sibling screen_vessel. The API-key qualifier in the title matches the description's key requirement.

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

Usage Guidelines3/5

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

Batch framing implies you reach for this instead of the single-vessel screen_vessel when you have many hulls, and the 50-item cap is a usable boundary. However, it never explicitly names screen_vessel, get_screening or check_vessel as alternatives, nor states when this tool is the wrong choice.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.1
    • First observedcheck_vessel
    • First observedfind_port
    • First observedget_screening
    • First observedget_usage
    • First observedscore_voyage
    • First observedscreen_vessel
    • First observedscreen_vessels

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

check_vessel, screen_vessel and screen_vessels all screen vessels and could be confused, but the descriptions explicitly differentiate them (free summary vs. authenticated full record vs. batch) and even point callers from check_vessel to screen_vessel. find_port, get_screening, get_usage and score_voyage are clearly distinct.

Naming Consistency4/5

Names consistently use snake_case verb_noun (get_screening, find_port, screen_vessel, score_voyage). The only deviation is the mixed verb choice 'check' vs 'screen' for the same core action and the singular/plural screen_vessel vs screen_vessels pair, which is a minor blemish.

Tool Count5/5

Seven tools is well-scoped for a maritime sanctions-screening server, with each tool earning its place (single screening, batch screening, record retrieval, port resolution, voyage scoring, usage). No redundant or filler tools.

Completeness4/5

Covers the core lifecycle: resolve ports, screen vessels individually and in batch, retrieve retained records, score voyage risk and check usage. Minor gaps exist — get_usage references monitor capacity but no tool manages monitors, and there is no tool to list or export past screenings.

Related MCP Connectors

Related MCP Servers