Port-level disruption intelligence — geo-fuses the WPI ports reference with GDELT events near each port (within event_radius_km over the last days): relevant-event volume, conflict signal, a 7d-vs-baseline anomaly ratio, recent headlines, nearby flagged-energy-asset exposure, and AIS-coverage context. Scope by country, terminal type, name, or proximity; with no scope it defaults to strategic ports (LNG/oil terminals + large harbors). Requires a plan with Maritime intelligence access (can_use_maritime) — the Corporate & Supply Chain plan and above.
Each row scores a pulse_level (critical / elevated / active / quiet) and rows are risk-ranked. Envelope: { success, data, summary, applied_filters }.
GDELT Cloud API key. Send as Authorization: Bearer gdelt_sk_....
Country filter on port-pulse. Accepts a country name, ISO-2, or ISO-3 (e.g. Ukraine, UA, UKR) via the shared resolveCountryInput layer; an unresolvable value returns 400 INVALID_COUNTRY.
Case-insensitive match on port name, alternate name, or UN/LOCODE.
true → only ports with an LNG terminal.
true → only ports with an oil terminal.
Point 'lat,lon' for a radius search; combine with radius_km (default 200).
GEM energy-asset gem_id — scope to ports within radius_km of that asset (cross-source join).
Radius in km for near / near_gem_id. Default 200; clamped 1–2000.
GDELT event window in days (1–30). Defaults to 14.
1 <= x <= 30How close an event must be to a port to count it (5–500 km). Defaults to 50.
5 <= x <= 500Number of ports to score (1–50). Defaults to 20.
1 <= x <= 50Risk-ranked ports with their pulse. Each row: port_id, name, unlocode, country, lat, lon, harbor_size, lng_terminal / oil_terminal, relevant_events, conflict_events, events_last_7d, anomaly_ratio, energy_exposure, pulse_level, ais_coverage, and up to 3 recent_events. A summary block totals the window.