Skip to main content
Glama

Port arrivals and departures (API key)

port_calls
Read-onlyIdempotent

Ships that called at one port between two times (UTC, ISO 8601), from the AIS Trail archive: ship (with its flag from the MMSI), arrival, departure, draught on arrival and departure, cargo estimate, previous and next port. Get the port_id from find_port. event: any (in port at any time in the range, default), arrival or departure. The sanctions column gives the codes of the sanctions lists (OFAC, UK, EU) that name the ship's IMO number; informational only, not a compliance determination. Needs an AIS Trail API key sent by the MCP client as the HTTP header 'Authorization: Bearer ap_live_…'. At most 100 port calls per call and at most 366 days; the plan's rules and credits (1 per port call returned) apply as for vessel_port_calls.

Input Schema

NameRequiredDescriptionDefault
toYesEnd, e.g. 2026-09-02T00:00:00Z
fromYesStart, e.g. 2026-09-01T00:00:00Z
eventNoany: in port at any time in the range; arrival: arrived in the range; departure: departed in the rangeany
port_idYesPort id from find_port

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / event / description
      Added value: +"any: in port at any time in the range; arrival: arrived in the range; departure: departed in the range"
    • addedInput schema / properties / port_id / description
      Added value: +"Port id from find_port"
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent annotations: discloses the required API key and exact header format, the 100-call and 366-day caps, the 1-credit-per-port-call cost model, and explicitly frames the sanctions column as informational rather than a compliance determination. These are the operational constraints an agent would otherwise trip over.

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 dense paragraph that front-loads the resource and scope, then moves to routing, filters, caveats, and limits in a sensible order. It is long-ish but nearly every clause carries a constraint an agent needs; the sanctions sentence and the vessel_port_calls billing pointer could be tightened.

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?

No output schema exists, and the description compensates by listing the returned columns including the sanctions codes and their caveat. Auth, pagination-style caps, date-range limits, and credit cost are all covered, leaving nothing material unstated for a read-only lookup.

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?

Schema coverage is 100%, so the baseline is 3; the description still adds value by stating times are UTC ISO 8601 and by reinforcing that port_id comes from find_port and that event defaults to 'any' with its in-port-anytime semantics. It does not add anything for the from/to boundary inclusivity, but coverage is otherwise solid.

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?

Opens with a specific verb and resource ('Ships that called at one port between two times') and enumerates the returned fields (ship/flag, arrival, departure, draught, cargo estimate, previous/next port). It distinguishes itself from fixed siblings by naming find_port for the port_id and pointing at vessel_port_calls for plan rules.

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 clear prerequisites ('Get the port_id from find_port') and defines the event selector's three modes with defaults, which is exactly what an agent needs to choose parameters. It does not explicitly state when to prefer this over a sibling like vessel_port_calls or vessel_events, only that billing follows vessel_port_calls.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.