---
type: "firecrawl-provider"
description: "National Geospatial-Intelligence Agency Maritime Safety Information: the World Port Index (UpdatedPub150.csv), current navigational warnings (NAVAREA IV, NAVAREA XII, HYDROLANT, HYDROPAC, HYDROARC via the smaps API) and the frozen ASAM anti-shipping activity archive, as a public-data collector (status, paginated list pinned to one publication, get, changes, search)."
use_when: "National Geospatial-Intelligence Agency Maritime Safety Information: the World Port Index (UpdatedPub150.csv), current navigational warnings (NAVAREA IV, NAVAREA XII, HYDROLANT, HYDROPAC, HYDROARC via the smaps API) and the frozen ASAM anti-shipping activity archive, as a public-data collector (status, paginated list pinned to one publication, get, changes, search)."
categories: "Travel"
capabilities: 5
credits_per_call: 5
---
# NGA Maritime Safety Information on Firecrawl Alexandria

National Geospatial-Intelligence Agency Maritime Safety Information: the World Port Index (UpdatedPub150.csv), current navigational warnings (NAVAREA IV, NAVAREA XII, HYDROLANT, HYDROPAC, HYDROARC via the smaps API) and the frozen ASAM anti-shipping activity archive, as a public-data collector (status, paginated list pinned to one publication, get, changes, search).

- Categories: Travel
- Category index: [Travel category](https://firecrawl.dev/alexandria/agents/categories/travel)
- Provider key: `msi-nga-mil`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/msi-nga-mil)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/openapi.json)

## Capabilities

- [Records changes](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/records_changes): Warnings only, from the publisher's own year filters: kind created = smaps status=all&createdOn=<year> (every warning created that year, INFORCE or CANCELED); kind cancelled = status=cancelled&cancelledOn=<year>. One nav area per call, paginated and pinned like records_list. Ports (monthly whole-file replace) and ASAM (frozen) have no publisher delta; the downstream diffs snapshots.
- [Records get](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/records_get): One record by its source id. wpi:<World Port Index Number> (or wpi:<number>:<OID_> for the two numbers that are on two rows; a bare number is accepted) from the CSV. smaps:<msgID>: scanned in the in-force list(s) and then the created-in-<year> list(s) of the given nav_area (all five areas without it; year defaults to the current year). asam:<reference> (YYYY-N) from the shapefile.
- [Records list](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/records_list): The full current list of one family, paginated with a cursor pinned to one publication. ports: every UpdatedPub150.csv row by offset (page_size default 200), pinned to the file SHA-256. warnings: one segment per call: nav_area with scope inforce (status=active) or scope year (status=all&createdOn=<year>: in force and cancelled warnings created that year), pinned to the SHA-256 of the segment's (msgID,status) list. asam: every shapefile record by offset (page_size default 500), publication id from /api/media lastModified, pinned to the zip SHA-256; flagged historical. Each page re-fetches the source; a publication change fails with publication_changed.
- [Search](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/search): World Port Index ports by name (case-insensitive substring of the main or alternate name), country (exact, case-insensitive, as the "Country Code" column spells it) and/or UN/LOCODE (spaces ignored), filtered in memory over the current UpdatedPub150.csv. Returns the first `limit` matches (default 50) and the total.
- [Source status](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/source_status): Cheap version check of one data family: publication id, content hash, file URL(s), sizes and record count. ports: SHA-256 of UpdatedPub150.csv and its row/column counts. warnings: five in-force smaps calls (one per nav area) with per-segment hashes and counts. asam: /api/media lastModified, the zip SHA-256, record count, date range, and the status of the retired /api/publications/asam (404 expected; anything else is reported as asam_api_revived).

## 1. Choose this provider when

National Geospatial-Intelligence Agency Maritime Safety Information: the World Port Index (UpdatedPub150.csv), current navigational warnings (NAVAREA IV, NAVAREA XII, HYDROLANT, HYDROPAC, HYDROARC via the smaps API) and the frozen ASAM anti-shipping activity archive, as a public-data collector (status, paginated list pinned to one publication, get, changes, search).

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "msi-nga-mil",
  "capability": "maritime-safety/records_changes",
  "options": {
    "kind": "cancelled",
    "nav_area": "C",
    "page_size": 1,
    "year": 2026
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `continuation` (string): Opaque cursor from the previous page (meta.page.next_cursor). It pins the publication; when the source moved on the call fails with invalid_input issue code publication_changed: restart without continuation. Example: `<continuation>`
- `kind` (string, required): kind Example: `created`
- `nav_area` (string, required): 4 (NAVAREA IV), 12 (NAVAREA XII), A (HYDROLANT), P (HYDROPAC) or C (HYDROARC); the names are accepted too. Example: `<nav_area>`
- `page_size` (number): page_size Example: `10`
- `year` (number, required): year Example: `2000`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "msi-nga-mil",
    capability: "maritime-safety/records_changes",
    options: {
      kind: "cancelled",
      nav_area: "C",
      page_size: 1,
      year: 2026,
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "msi-nga-mil",
  "capability": "maritime-safety/records_changes",
  "options": {
    "kind": "cancelled",
    "nav_area": "C",
    "page_size": 1,
    "year": 2026
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "msi-nga-mil",
    "capability": "maritime-safety/records_changes",
    "options": {
      "kind": "cancelled",
      "nav_area": "C",
      "page_size": 1,
      "year": 2026
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'msi-nga-mil/maritime-safety/records_changes' \
  --options '{"kind":"cancelled","nav_area":"C","page_size":1,"year":2026}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "msi-nga-mil",
  "capability": "maritime-safety/records_changes",
  "options": {
    "kind": "cancelled",
    "nav_area": "C",
    "page_size": 1,
    "year": 2026
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "msi-nga-mil",
  "capability": "maritime-safety/records_changes",
  "options": {
    "kind": "cancelled",
    "nav_area": "C",
    "page_size": 1,
    "year": 2026
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "count": 1,
  "family": "warnings",
  "has_more": true,
  "historical": false,
  "kind": "cancelled",
  "nav_area_code": "C",
  "next_offset": 1,
  "observed_at_ms": 1792357059154,
  "offset": 0,
  "publication_id": "eb6fcc49dd8e216c29fb454f7673009dfc89f4be9cdd1b61c7e5fee4e9027021",
  "published_at": null,
  "records": [
    {
      "cancelled_on": "162330Z OCT 2026",
      "cancelled_on_db": "2026-10-16T23:30:00",
      "category": "RADIO SERVICE",
      "created_on": "162010Z OCT 2026",
      "dnc_region": null,
      "family": "warning",
      "ingest_date": "2026-10-16 20:07:46.06",
      "latitude": null,
      "longitude": null,
      "msg_id": "93e72bbf-3e60-4d69-8154-ec6cb88eea77",
      "msg_sqnc_number": 302,
      "msg_text": "162010Z OCT 26\nHYDROARC 302/26\nCANADA.\n1. MCTS IQALUIT REMOTE STATION INUVIK\n   68-19.00N 133-35.00W MF SERVICES OFF AIR UNTIL\n   162230Z OCT.\n2. CANCEL THIS MSG 162330Z OCT 26.",
      "msg_type": "HYDROARC",
      "nav_area": "NAVAREA XVII",
      "nav_area_code": "C",
      "oceans": null,
      "outgoing_id": "9038d9ef-c028-4b2d-9333-0e8c0e087d4a",
      "publication_id": "eb6fcc49dd8e216c29fb454f7673009dfc89f4be9cdd1b61c7e5fee4e9027021",
      "retrieved_at": "2026-10-18T20:57:38Z",
      "sent_on": "162019Z OCT 2026",
      "sent_on_db": "2026-10-16T20:19:54.004",
      "shape_id": "usnavarea.6",
      "source_record_id": "smaps:93e72bbf-3e60-4d69-8154-ec6cb88eea77",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=cancelled&cancelledOn=2026&category=14&output=json",
      "status": "CANCELED",
      "sub_region": "15",
      "us_nav_area": null,
      "warning_number": "HYDROARC 302/26"
    }
  ],
  "retrieved_at": "2026-10-18T20:57:39Z",
  "segment": "C:cancelled:2026",
  "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=cancelled&cancelledOn=2026&category=14&output=json",
  "total": 111,
  "year": 2026
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Records changes

- Capability: `maritime-safety/records_changes`
- Description: Warnings only, from the publisher's own year filters: kind created = smaps status=all&createdOn=<year> (every warning created that year, INFORCE or CANCELED); kind cancelled = status=cancelled&cancelledOn=<year>. One nav area per call, paginated and pinned like records_list. Ports (monthly whole-file replace) and ASAM (frozen) have no publisher delta; the downstream diffs snapshots.
- Instructions: Incremental collection of navigational warnings by year of creation or cancellation.
- Cost: 5 credits per call
- Capability file: [Records changes](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/records_changes)

Accepted options:
- `continuation` (string): Opaque cursor from the previous page (meta.page.next_cursor). It pins the publication; when the source moved on the call fails with invalid_input issue code publication_changed: restart without continuation. Example: `<continuation>`
- `kind` (string, required): kind Example: `created`
- `nav_area` (string, required): 4 (NAVAREA IV), 12 (NAVAREA XII), A (HYDROLANT), P (HYDROPAC) or C (HYDROARC); the names are accepted too. Example: `<nav_area>`
- `page_size` (number): page_size Example: `10`
- `year` (number, required): year Example: `2000`

Response schema example:
```json
{
  "count": 1,
  "family": "warnings",
  "has_more": true,
  "historical": false,
  "kind": "cancelled",
  "nav_area_code": "C",
  "next_offset": 1,
  "observed_at_ms": 1792357059154,
  "offset": 0,
  "publication_id": "eb6fcc49dd8e216c29fb454f7673009dfc89f4be9cdd1b61c7e5fee4e9027021",
  "published_at": null,
  "records": [
    {
      "cancelled_on": "162330Z OCT 2026",
      "cancelled_on_db": "2026-10-16T23:30:00",
      "category": "RADIO SERVICE",
      "created_on": "162010Z OCT 2026",
      "dnc_region": null,
      "family": "warning",
      "ingest_date": "2026-10-16 20:07:46.06",
      "latitude": null,
      "longitude": null,
      "msg_id": "93e72bbf-3e60-4d69-8154-ec6cb88eea77",
      "msg_sqnc_number": 302,
      "msg_text": "162010Z OCT 26\nHYDROARC 302/26\nCANADA.\n1. MCTS IQALUIT REMOTE STATION INUVIK\n   68-19.00N 133-35.00W MF SERVICES OFF AIR UNTIL\n   162230Z OCT.\n2. CANCEL THIS MSG 162330Z OCT 26.",
      "msg_type": "HYDROARC",
      "nav_area": "NAVAREA XVII",
      "nav_area_code": "C",
      "oceans": null,
      "outgoing_id": "9038d9ef-c028-4b2d-9333-0e8c0e087d4a",
      "publication_id": "eb6fcc49dd8e216c29fb454f7673009dfc89f4be9cdd1b61c7e5fee4e9027021",
      "retrieved_at": "2026-10-18T20:57:38Z",
      "sent_on": "162019Z OCT 2026",
      "sent_on_db": "2026-10-16T20:19:54.004",
      "shape_id": "usnavarea.6",
      "source_record_id": "smaps:93e72bbf-3e60-4d69-8154-ec6cb88eea77",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=cancelled&cancelledOn=2026&category=14&output=json",
      "status": "CANCELED",
      "sub_region": "15",
      "us_nav_area": null,
      "warning_number": "HYDROARC 302/26"
    }
  ],
  "retrieved_at": "2026-10-18T20:57:39Z",
  "segment": "C:cancelled:2026",
  "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=cancelled&cancelledOn=2026&category=14&output=json",
  "total": 111,
  "year": 2026
}
```

### Records get

- Capability: `maritime-safety/records_get`
- Description: One record by its source id. wpi:<World Port Index Number> (or wpi:<number>:<OID_> for the two numbers that are on two rows; a bare number is accepted) from the CSV. smaps:<msgID>: scanned in the in-force list(s) and then the created-in-<year> list(s) of the given nav_area (all five areas without it; year defaults to the current year). asam:<reference> (YYYY-N) from the shapefile.
- Instructions: Re-reading one port, warning or incident whose id a previous call returned.
- Cost: 5 credits per call
- Capability file: [Records get](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/records_get)

Accepted options:
- `id` (string, required): wpi:<n>[:<oid>], smaps:<msgID> or asam:<YYYY-N>. Example: `<id>`
- `nav_area` (string): 4 (NAVAREA IV), 12 (NAVAREA XII), A (HYDROLANT), P (HYDROPAC) or C (HYDROARC); the names are accepted too. Example: `<nav_area>`
- `year` (number): year Example: `2000`

Response schema example:
```json
{
  "family": "ports",
  "observed_at_ms": 1792356919922,
  "publication_id": "315644f1e77966291633145fd351c2762b37702d115926b9ed074b39e8e21667",
  "record": {
    "alternate_port_name": null,
    "attributes": {
      "Anchorage Depth (m)": "11.0",
      "Chemical Holding Tank Disposal": "Unknown",
      "Communications - Airport": "Yes",
      "Communications - Radio": "Yes",
      "Communications - Radiotelephone": "Unknown",
      "Communications - Rail": "Yes",
      "Communications - Telefax": "Yes",
      "Communications - Telephone": "Yes",
      "Cranes - Fixed": "Unknown",
      "Cranes - Floating": "Unknown",
      "Cranes - Mobile": "Yes",
      "Cranes Container": "Unknown",
      "Degaussing": "Unknown",
      "Digital Nautical Chart": "a2130640, coa21b, gen21a, h2130640",
      "Dirty Ballast Disposal": "Yes",
      "Dry Dock": "Small",
      "Entrance Restriction - Heavy Swell": "No",
      "Entrance Restriction - Ice": "Unknown",
      "Entrance Restriction - Other": "Yes",
      "Entrance Restriction - Tide": "Yes",
      "Entrance Width (m)": "0.0",
      "Estimated Time of Arrival Message": "Yes",
      "Facilities - Anchorage": "Unknown",
      "Facilities - Beach Mooring": "Unknown",
      "Facilities - Breakbulk": "Unknown",
      "Facilities - Container": "Unknown",
      "Facilities - Dangerous Cargo Anchorage": "Unknown",
      "Facilities - Ice Mooring": "Unknown",
      "Facilities - LNG Terminal": "Unknown",
      "Facilities - Liquid Bulk": "Unknown",
      "Facilities - Med Mooring": "Unknown",
      "Facilities - Oil Terminal": "Unknown",
      "Facilities - Other": "Unknown",
      "Facilities - Ro-Ro": "Unknown",
      "Facilities - Solid Bulk": "Unknown",
      "Facilities - Wharves": "Yes",
      "Garbage Disposal": "Yes",
      "Good Holding Ground": "Unknown",
      "IHO S-101 Electronic Navigational Chart": null,
      "IHO S-130 Sea Area": null,
      "IHO S-57 Electronic Navigational Chart": null,
      "Lifts - 0-24 Tons": "Unknown",
      "Lifts - 100+ Tons": "Unknown",
      "Lifts - 25-49 Tons": "Yes",
      "Lifts - 50-100 Tons": "Unknown",
      "Liquified Natural Gas Terminal Depth (m)": "0.0",
      "Maximum Vessel Beam (m)": "42.0",
      "Medical Facilities": "Yes",
      "Offshore Maximum Vessel Beam (m)": "0.0",
      "Offshore Maximum Vessel Draft (m)": "0.0",
      "Offshore Maximum Vessel Length (m)": "0.0",
      "Oil Terminal Depth (m)": "6.4",
      "Overhead Limits": "Yes",
      "Pilotage - Advisable": "Yes",
      "Pilotage - Available": "Yes",
      "Pilotage - Compulsory": "Yes",
      "Pilotage - Local Assistance": "Unknown",
      "Publication Link": "https://msi.geo.nga.mil/api/publications/download?key=16694491/SFH00000/Pub192bk.pdf&type=view",
      "Quarantine - Other": "Yes",
      "Quarantine - Pratique": "Yes",
      "Quarantine - Sanitation": "Unknown",
      "Railway": "Small",
      "Repairs": "Limited",
      "Sailing Direction or Publication": "Sailing Directions Pub. 192 (Enroute) - North Sea",
      "Search and Rescue": "Unknown",
      "Services - Electrical Repair": "Unknown",
      "Services - Electricity": "Unknown",
      "Services - Ice Breaking": "Unknown",
      "Services - Longshoremen": "Yes",
      "Services - Navigation Equipment": "Unknown",
      "Services -Diving": "Unknown",
      "Services -Steam": "Unknown",
      "Standard Nautical Chart": "37205.0",
      "Supplies - Aviation Fuel": "Unknown",
      "Supplies - Deck": "Unknown",
      "Supplies - Diesel Oil": "Unknown",
      "Supplies - Engine": "Unknown",
      "Supplies - Fuel Oil": "Yes",
      "Supplies - Potable Water": "Yes",
      "Supplies - Provisions": "Unknown",
      "Tidal Range (m)": "1.0",
      "Traffic Separation Scheme": "Unknown",
      "Tugs - Assistance": "Yes",
      "Tugs - Salvage": "Unknown",
      "Turning Area": "Unknown",
      "US Representative": "No",
      "Underkeel Clearance Management System": "Unknown",
      "Vessel Traffic Service": "Unknown"
    },
    "cargo_pier_depth_m": 7.9,
    "channel_depth_m": 9.4,
    "country_code": "Denmark",
    "family": "port",
    "first_port_of_entry": "Yes",
    "harbor_size": "Small",
    "harbor_type": "Coastal (Natural)",
    "harbor_use": "Unknown",
    "latitude": 55.466667,
    "longitude": 8.45,
    "main_port_name": "Esbjerg",
    "maximum_vessel_draft_m": 0,
    "maximum_vessel_length_m": 0,
    "navarea": "I",
    "oid": 2166,
    "port_security": "Unknown",
    "publication_id": "315644f1e77966291633145fd351c2762b37702d115926b9ed074b39e8e21667",
    "region_name": "Jylland -- 30020",
    "retrieved_at": "2026-10-18T20:55:18Z",
    "shelter_afforded": "Good",
    "source_record_id": "wpi:30640",
    "source_url": "https://msi.nga.mil/api/publications/download?type=view&key=16920959/SFH00000/UpdatedPub150.csv",
    "unlocode": "DK EBJ",
    "world_port_index_number": 30640,
    "world_water_body": "North Sea; North Atlantic Ocean"
  },
  "retrieved_at": "2026-10-18T20:55:18Z",
  "source_url": "https://msi.nga.mil/api/publications/download?type=view&key=16920959/SFH00000/UpdatedPub150.csv"
}
```

### Records list

- Capability: `maritime-safety/records_list`
- Description: The full current list of one family, paginated with a cursor pinned to one publication. ports: every UpdatedPub150.csv row by offset (page_size default 200), pinned to the file SHA-256. warnings: one segment per call: nav_area with scope inforce (status=active) or scope year (status=all&createdOn=<year>: in force and cancelled warnings created that year), pinned to the SHA-256 of the segment's (msgID,status) list. asam: every shapefile record by offset (page_size default 500), publication id from /api/media lastModified, pinned to the zip SHA-256; flagged historical. Each page re-fetches the source; a publication change fails with publication_changed.
- Instructions: Collecting a whole family. For warnings, call once per nav area (4, 12, A, P, C); in-force lists must come from scope inforce because the year segment omits in-force warnings created in earlier years.
- Cost: 5 credits per call
- Capability file: [Records list](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/records_list)

Accepted options:
- `continuation` (string): Opaque cursor from the previous page (meta.page.next_cursor). It pins the publication; when the source moved on the call fails with invalid_input issue code publication_changed: restart without continuation. Example: `<continuation>`
- `family` (string, required): ports = World Port Index CSV; warnings = current smaps navigational warnings; asam = the frozen Anti-Shipping Activity Messages shapefile. Example: `ports`
- `nav_area` (string): 4 (NAVAREA IV), 12 (NAVAREA XII), A (HYDROLANT), P (HYDROPAC) or C (HYDROARC); the names are accepted too. Example: `<nav_area>`
- `page_size` (number): page_size Example: `10`
- `scope` (string): warnings only: inforce (default) or year. Example: `inforce`
- `year` (number): year Example: `2000`

Response schema example:
```json
{
  "count": 3,
  "family": "warnings",
  "has_more": true,
  "historical": false,
  "next_offset": 3,
  "observed_at_ms": 1792356885369,
  "offset": 0,
  "publication_id": "23ec02cc1377d75b488e018d8e46b38749e26d6096164785b3ae93fa1681e20e",
  "published_at": null,
  "records": [
    {
      "cancelled_on": null,
      "cancelled_on_db": null,
      "category": "OBSTRUCTION",
      "created_on": "161846Z OCT 2026",
      "dnc_region": "DNC 28",
      "family": "warning",
      "ingest_date": "2026-10-16 18:45:09.513",
      "latitude": null,
      "longitude": null,
      "msg_id": "4d0faa2c-794b-4305-b00a-487047fea2e0",
      "msg_sqnc_number": 301,
      "msg_text": "161846Z OCT 26\nHYDROARC 301/26\nDAVIS STRAIT.\nGREENLAND.\n1. SCIENTIFIC MOORINGS ESTABLISHED IN: \n   A. 67-11.65N 055-18.56W.\n   B. 67-08.75N 055-52.46W.\n   C. 67-06.38N 056-19.71W.\n   D. 67-04.49N 056-41.18W.",
      "msg_type": "HYDROARC",
      "nav_area": "NAVAREA XVIII",
      "nav_area_code": "C",
      "oceans": "DAVIS STRAIT",
      "outgoing_id": "cad60e50-5702-4e48-9dcb-9d35dac33e97",
      "publication_id": "23ec02cc1377d75b488e018d8e46b38749e26d6096164785b3ae93fa1681e20e",
      "retrieved_at": "2026-10-18T20:54:45Z",
      "sent_on": null,
      "sent_on_db": null,
      "shape_id": "usnavarea.6",
      "source_record_id": "smaps:4d0faa2c-794b-4305-b00a-487047fea2e0",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=active&category=14&output=json",
      "status": "INFORCE",
      "sub_region": "38",
      "us_nav_area": "HYDROARC",
      "warning_number": "HYDROARC 301/26"
    },
    {
      "cancelled_on": null,
      "cancelled_on_db": null,
      "category": "INFORCE BULLETIN",
      "created_on": "161813Z OCT 2026",
      "dnc_region": null,
      "family": "warning",
      "ingest_date": "2026-10-16 18:13:45.613",
      "latitude": null,
      "longitude": null,
      "msg_id": "ba0b964c-3af8-4485-90ed-6fcd22a83ee8",
      "msg_sqnc_number": 300,
      "msg_text": "161815Z OCT 26.\nHYDROARC 300/26.\n1. HYDROARC WARNINGS IN FORCE AS OF 161815Z OCT 26.\n   ALL THE INFORCE WARNINGS ARE LISTED HERE.\n   299/2026, 298/2026, 297/2026, 295/2026, 294/2026,\n   289/2026, 268/2026, 267/2026, 266/2026, 265/2026,\n   258/2026, 256/2026, 253/2026, 252/2026, 250/2026,\n   242/2026, 238/2026, 237/2026, 236/2026, 226/2026,\n   202/2026, 191/2026, 155/2026.\n   178/2025, 175/2025, 148/2025, 103/2025.\n   283/2024.\n   163/2023.\n2. THE COMPLETE TEXT OF ALL IN-FORCE HYDROARC \n   BROADCAST WARNINGS ARE AVAILABLE ON THE NGA\n   MARITIME SAFETY INFORMATION WEBSITE AT:\n   MSI.NGA.MIL/NAVWARNINGS.\n   ALTERNATIVELY, THESE MAY BE REQUESTED BY E-MAIL\n   FROM NGA AT NAVSAFETY@NGA.MIL.\n3. CANCEL HYDROARC 185/2026, 263/2026, 283/2026.\n",
      "msg_type": "HYDROARC",
      "nav_area": null,
      "nav_area_code": "C",
      "oceans": null,
      "outgoing_id": "b6d2a79c-34d7-4e38-8362-e0a24066ab8b",
      "publication_id": "23ec02cc1377d75b488e018d8e46b38749e26d6096164785b3ae93fa1681e20e",
      "retrieved_at": "2026-10-18T20:54:45Z",
      "sent_on": null,
      "sent_on_db": null,
      "shape_id": "usnavarea.6",
      "source_record_id": "smaps:ba0b964c-3af8-4485-90ed-6fcd22a83ee8",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=active&category=14&output=json",
      "status": "INFORCE",
      "sub_region": null,
      "us_nav_area": "HYDROARC",
      "warning_number": "HYDROARC 300/26"
    },
    {
      "cancelled_on": null,
      "cancelled_on_db": null,
      "category": "HAZARDOUS OPERATIONS",
      "created_on": "161803Z OCT 2026",
      "dnc_region": "DNC 22",
      "family": "warning",
      "ingest_date": "2026-10-16 17:30:20.828",
      "latitude": null,
      "longitude": null,
      "msg_id": "1190d607-aefe-474f-9a15-79e501e339df",
      "msg_sqnc_number": 299,
      "msg_text": "161803Z OCT 26\nHYDROARC 299/26.\nBARENTS SEA.\nRUSSIA.\n1. HAZARDOUS OPERATIONS 0400Z TO 1500Z DAILY\n   17 THRU 24 OCT IN AREA BOUND BY\n   71-49.50N 032-24.00E, 71-20.00N 038-01.50E,\n   71-08.00N 041-13.00E, 70-13.00N 042-45.00E,\n   69-33.00N 041-04.00E, 69-12.00N 038-20.00E,\n   69-22.00N 035-52.00E, 69-29.00N 035-11.00E,\n   69-32.50N 033-14.00E, 69-38.80N 033-06.00E,\n   69-44.50N 033-05.00E, 69-53.00N 033-21.00E,\n   70-23.50N 032-33.00E.\n2. CANCEL HYDROARC 293/26.\n3. CANCEL THIS MSG 241600Z OCT 26.\n",
      "msg_type": "HYDROARC",
      "nav_area": "NAVAREA XX",
      "nav_area_code": "C",
      "oceans": "BARENTS SEA",
      "outgoing_id": "56b19182-d082-4ef0-934e-b39fa5b83a15",
      "publication_id": "23ec02cc1377d75b488e018d8e46b38749e26d6096164785b3ae93fa1681e20e",
      "retrieved_at": "2026-10-18T20:54:45Z",
      "sent_on": null,
      "sent_on_db": null,
      "shape_id": "usnavarea.6",
      "source_record_id": "smaps:1190d607-aefe-474f-9a15-79e501e339df",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=active&category=14&output=json",
      "status": "INFORCE",
      "sub_region": "42, 43",
      "us_nav_area": "HYDROARC",
      "warning_number": "HYDROARC 299/26"
    }
  ],
  "retrieved_at": "2026-10-18T20:54:45Z",
  "segment": "C:inforce",
  "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=active&category=14&output=json",
  "total": 30
}
```

### Search

- Capability: `maritime-safety/search`
- Description: World Port Index ports by name (case-insensitive substring of the main or alternate name), country (exact, case-insensitive, as the "Country Code" column spells it) and/or UN/LOCODE (spaces ignored), filtered in memory over the current UpdatedPub150.csv. Returns the first `limit` matches (default 50) and the total.
- Instructions: Finding a port and its wpi: id by name, country or UN/LOCODE.
- Cost: 5 credits per call
- Capability file: [Search](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/search)

Accepted options:
- `country` (string): country Example: `<country>`
- `limit` (number): limit Example: `10`
- `query` (string): query Example: `<query>`
- `unlocode` (string): unlocode Example: `<unlocode>`

Response schema example:
```json
{
  "count": 1,
  "family": "ports",
  "observed_at_ms": 1792356964948,
  "publication_id": "315644f1e77966291633145fd351c2762b37702d115926b9ed074b39e8e21667",
  "query": {
    "country": null,
    "query": null,
    "unlocode": "DK EBJ"
  },
  "records": [
    {
      "alternate_port_name": null,
      "attributes": {
        "Anchorage Depth (m)": "11.0",
        "Chemical Holding Tank Disposal": "Unknown",
        "Communications - Airport": "Yes",
        "Communications - Radio": "Yes",
        "Communications - Radiotelephone": "Unknown",
        "Communications - Rail": "Yes",
        "Communications - Telefax": "Yes",
        "Communications - Telephone": "Yes",
        "Cranes - Fixed": "Unknown",
        "Cranes - Floating": "Unknown",
        "Cranes - Mobile": "Yes",
        "Cranes Container": "Unknown",
        "Degaussing": "Unknown",
        "Digital Nautical Chart": "a2130640, coa21b, gen21a, h2130640",
        "Dirty Ballast Disposal": "Yes",
        "Dry Dock": "Small",
        "Entrance Restriction - Heavy Swell": "No",
        "Entrance Restriction - Ice": "Unknown",
        "Entrance Restriction - Other": "Yes",
        "Entrance Restriction - Tide": "Yes",
        "Entrance Width (m)": "0.0",
        "Estimated Time of Arrival Message": "Yes",
        "Facilities - Anchorage": "Unknown",
        "Facilities - Beach Mooring": "Unknown",
        "Facilities - Breakbulk": "Unknown",
        "Facilities - Container": "Unknown",
        "Facilities - Dangerous Cargo Anchorage": "Unknown",
        "Facilities - Ice Mooring": "Unknown",
        "Facilities - LNG Terminal": "Unknown",
        "Facilities - Liquid Bulk": "Unknown",
        "Facilities - Med Mooring": "Unknown",
        "Facilities - Oil Terminal": "Unknown",
        "Facilities - Other": "Unknown",
        "Facilities - Ro-Ro": "Unknown",
        "Facilities - Solid Bulk": "Unknown",
        "Facilities - Wharves": "Yes",
        "Garbage Disposal": "Yes",
        "Good Holding Ground": "Unknown",
        "IHO S-101 Electronic Navigational Chart": null,
        "IHO S-130 Sea Area": null,
        "IHO S-57 Electronic Navigational Chart": null,
        "Lifts - 0-24 Tons": "Unknown",
        "Lifts - 100+ Tons": "Unknown",
        "Lifts - 25-49 Tons": "Yes",
        "Lifts - 50-100 Tons": "Unknown",
        "Liquified Natural Gas Terminal Depth (m)": "0.0",
        "Maximum Vessel Beam (m)": "42.0",
        "Medical Facilities": "Yes",
        "Offshore Maximum Vessel Beam (m)": "0.0",
        "Offshore Maximum Vessel Draft (m)": "0.0",
        "Offshore Maximum Vessel Length (m)": "0.0",
        "Oil Terminal Depth (m)": "6.4",
        "Overhead Limits": "Yes",
        "Pilotage - Advisable": "Yes",
        "Pilotage - Available": "Yes",
        "Pilotage - Compulsory": "Yes",
        "Pilotage - Local Assistance": "Unknown",
        "Publication Link": "https://msi.geo.nga.mil/api/publications/download?key=16694491/SFH00000/Pub192bk.pdf&type=view",
        "Quarantine - Other": "Yes",
        "Quarantine - Pratique": "Yes",
        "Quarantine - Sanitation": "Unknown",
        "Railway": "Small",
        "Repairs": "Limited",
        "Sailing Direction or Publication": "Sailing Directions Pub. 192 (Enroute) - North Sea",
        "Search and Rescue": "Unknown",
        "Services - Electrical Repair": "Unknown",
        "Services - Electricity": "Unknown",
        "Services - Ice Breaking": "Unknown",
        "Services - Longshoremen": "Yes",
        "Services - Navigation Equipment": "Unknown",
        "Services -Diving": "Unknown",
        "Services -Steam": "Unknown",
        "Standard Nautical Chart": "37205.0",
        "Supplies - Aviation Fuel": "Unknown",
        "Supplies - Deck": "Unknown",
        "Supplies - Diesel Oil": "Unknown",
        "Supplies - Engine": "Unknown",
        "Supplies - Fuel Oil": "Yes",
        "Supplies - Potable Water": "Yes",
        "Supplies - Provisions": "Unknown",
        "Tidal Range (m)": "1.0",
        "Traffic Separation Scheme": "Unknown",
        "Tugs - Assistance": "Yes",
        "Tugs - Salvage": "Unknown",
        "Turning Area": "Unknown",
        "US Representative": "No",
        "Underkeel Clearance Management System": "Unknown",
        "Vessel Traffic Service": "Unknown"
      },
      "cargo_pier_depth_m": 7.9,
      "channel_depth_m": 9.4,
      "country_code": "Denmark",
      "family": "port",
      "first_port_of_entry": "Yes",
      "harbor_size": "Small",
      "harbor_type": "Coastal (Natural)",
      "harbor_use": "Unknown",
      "latitude": 55.466667,
      "longitude": 8.45,
      "main_port_name": "Esbjerg",
      "maximum_vessel_draft_m": 0,
      "maximum_vessel_length_m": 0,
      "navarea": "I",
      "oid": 2166,
      "port_security": "Unknown",
      "publication_id": "315644f1e77966291633145fd351c2762b37702d115926b9ed074b39e8e21667",
      "region_name": "Jylland -- 30020",
      "retrieved_at": "2026-10-18T20:56:04Z",
      "shelter_afforded": "Good",
      "source_record_id": "wpi:30640",
      "source_url": "https://msi.nga.mil/api/publications/download?type=view&key=16920959/SFH00000/UpdatedPub150.csv",
      "unlocode": "DK EBJ",
      "world_port_index_number": 30640,
      "world_water_body": "North Sea; North Atlantic Ocean"
    }
  ],
  "retrieved_at": "2026-10-18T20:56:04Z",
  "source_url": "https://msi.nga.mil/api/publications/download?type=view&key=16920959/SFH00000/UpdatedPub150.csv",
  "total": 1,
  "truncated": false
}
```

### Source status

- Capability: `maritime-safety/source_status`
- Description: Cheap version check of one data family: publication id, content hash, file URL(s), sizes and record count. ports: SHA-256 of UpdatedPub150.csv and its row/column counts. warnings: five in-force smaps calls (one per nav area) with per-segment hashes and counts. asam: /api/media lastModified, the zip SHA-256, record count, date range, and the status of the retired /api/publications/asam (404 expected; anything else is reported as asam_api_revived).
- Instructions: Before a records_list run, or on a schedule by the downstream, to see whether the publication moved.
- Cost: 5 credits per call
- Capability file: [Source status](https://firecrawl.dev/alexandria/agents/providers/msi-nga-mil/maritime-safety/source_status)

Accepted options:
- `family` (string, required): ports = World Port Index CSV; warnings = current smaps navigational warnings; asam = the frozen Anti-Shipping Activity Messages shapefile. Example: `ports`

Response schema example:
```json
{
  "areas_with_warnings": 5,
  "columns": null,
  "content_hash": "2888e067e35f6b0e4d97f191adeaf9b0527cc6f05c464b44f7d07253ebacdc87",
  "date_range": null,
  "family": "warnings",
  "files": [
    {
      "sha256": "9564444ec0fa15b37c7c21487b539f74b5dad020e55f2d7c8a325b1fcc8e514e",
      "size": 89699,
      "url": "https://msi.nga.mil/api/publications/smaps?navArea=4&status=active&category=14&output=json"
    },
    {
      "sha256": "0e93dfb3910c3283ef301cd9577d5e24d91ed3c8110318ea93cd91cfc4aefa7f",
      "size": 26672,
      "url": "https://msi.nga.mil/api/publications/smaps?navArea=12&status=active&category=14&output=json"
    },
    {
      "sha256": "89ef689adceef6e5e530bd9351d29b878d1126796684569debb8813a96de25cd",
      "size": 74266,
      "url": "https://msi.nga.mil/api/publications/smaps?navArea=A&status=active&category=14&output=json"
    },
    {
      "sha256": "98bb6b9872f3683db421a9c55127b55f9687166e7cf83983a53ed3f1a746269e",
      "size": 120010,
      "url": "https://msi.nga.mil/api/publications/smaps?navArea=P&status=active&category=14&output=json"
    },
    {
      "sha256": "23ec02cc1377d75b488e018d8e46b38749e26d6096164785b3ae93fa1681e20e",
      "size": 25356,
      "url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=active&category=14&output=json"
    }
  ],
  "historical": false,
  "legacy_api_status": null,
  "observed_at_ms": 1792356866129,
  "publication_id": "2888e067e35f6b0e4d97f191adeaf9b0527cc6f05c464b44f7d07253ebacdc87",
  "published_at": null,
  "record_count": 382,
  "retrieved_at": "2026-10-18T20:54:25Z",
  "segments": [
    {
      "nav_area": "NAVAREA IV",
      "nav_area_code": "4",
      "publication_id": "9564444ec0fa15b37c7c21487b539f74b5dad020e55f2d7c8a325b1fcc8e514e",
      "record_count": 103,
      "scope": "inforce",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=4&status=active&category=14&output=json"
    },
    {
      "nav_area": "NAVAREA XII",
      "nav_area_code": "12",
      "publication_id": "0e93dfb3910c3283ef301cd9577d5e24d91ed3c8110318ea93cd91cfc4aefa7f",
      "record_count": 25,
      "scope": "inforce",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=12&status=active&category=14&output=json"
    },
    {
      "nav_area": "HYDROLANT",
      "nav_area_code": "A",
      "publication_id": "89ef689adceef6e5e530bd9351d29b878d1126796684569debb8813a96de25cd",
      "record_count": 81,
      "scope": "inforce",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=A&status=active&category=14&output=json"
    },
    {
      "nav_area": "HYDROPAC",
      "nav_area_code": "P",
      "publication_id": "98bb6b9872f3683db421a9c55127b55f9687166e7cf83983a53ed3f1a746269e",
      "record_count": 143,
      "scope": "inforce",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=P&status=active&category=14&output=json"
    },
    {
      "nav_area": "HYDROARC",
      "nav_area_code": "C",
      "publication_id": "23ec02cc1377d75b488e018d8e46b38749e26d6096164785b3ae93fa1681e20e",
      "record_count": 30,
      "scope": "inforce",
      "source_url": "https://msi.nga.mil/api/publications/smaps?navArea=C&status=active&category=14&output=json"
    }
  ]
}
```
