@cyanheads/noaa-marine-mcp-server 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +19 -7
  4. package/changelog/0.2.x/0.2.0.md +22 -0
  5. package/dist/index.js +7 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/mcp-server/resources/definitions/noaa-marine-station.resource.d.ts.map +1 -1
  8. package/dist/mcp-server/resources/definitions/noaa-marine-station.resource.js +19 -9
  9. package/dist/mcp-server/resources/definitions/noaa-marine-station.resource.js.map +1 -1
  10. package/dist/mcp-server/tools/definitions/noaa-marine-find-stations.tool.d.ts +3 -1
  11. package/dist/mcp-server/tools/definitions/noaa-marine-find-stations.tool.d.ts.map +1 -1
  12. package/dist/mcp-server/tools/definitions/noaa-marine-find-stations.tool.js +67 -32
  13. package/dist/mcp-server/tools/definitions/noaa-marine-find-stations.tool.js.map +1 -1
  14. package/dist/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.d.ts +33 -0
  15. package/dist/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.d.ts.map +1 -0
  16. package/dist/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.js +131 -0
  17. package/dist/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.js.map +1 -0
  18. package/dist/mcp-server/tools/definitions/noaa-marine-get-currents.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/noaa-marine-get-currents.tool.js +2 -0
  20. package/dist/mcp-server/tools/definitions/noaa-marine-get-currents.tool.js.map +1 -1
  21. package/dist/services/ndbc/ndbc-service.d.ts +13 -1
  22. package/dist/services/ndbc/ndbc-service.d.ts.map +1 -1
  23. package/dist/services/ndbc/ndbc-service.js +84 -0
  24. package/dist/services/ndbc/ndbc-service.js.map +1 -1
  25. package/dist/services/ndbc/types.d.ts +23 -0
  26. package/dist/services/ndbc/types.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/server.json +3 -3
package/AGENTS.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** noaa-marine-mcp-server
4
- **Version:** 0.1.7
4
+ **Version:** 0.2.0
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.14`
6
6
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
package/CLAUDE.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** noaa-marine-mcp-server
4
- **Version:** 0.1.7
4
+ **Version:** 0.2.0
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.14`
6
6
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
package/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  <div align="center">
2
2
  <h1>@cyanheads/noaa-marine-mcp-server</h1>
3
3
  <p><b>Find NOAA tide stations and NDBC buoys, fetch tide predictions, water levels, tidal currents, and live buoy conditions via MCP. STDIO or Streamable HTTP.</b>
4
- <div>5 Tools • 1 Resource</div>
4
+ <div>6 Tools • 1 Resource</div>
5
5
  </p>
6
6
  </div>
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-0.1.7-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/noaa-marine-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/noaa-marine-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/noaa-marine-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.14-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.2.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/noaa-marine-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/noaa-marine-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/noaa-marine-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.14-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -29,7 +29,7 @@
29
29
 
30
30
  ## Tools
31
31
 
32
- Five tools covering the full US marine operational workflow — station discovery, tide predictions, observed water levels, tidal current predictions, and live offshore buoy conditions:
32
+ Six tools covering the full US marine operational workflow — station discovery, tide predictions, observed water levels, tidal current predictions and profiles, and live offshore buoy conditions:
33
33
 
34
34
  | Tool | Description |
35
35
  |:-----|:------------|
@@ -38,13 +38,14 @@ Five tools covering the full US marine operational workflow — station discover
38
38
  | `noaa_marine_get_water_level` | Observed water level (real-time or historical) for a CO-OPS station, paired with predictions to compute storm surge or anomalous drawdown. |
39
39
  | `noaa_marine_get_currents` | Tidal current predictions for a CO-OPS current station: max flood/ebb speeds, slack times, and directions. Defaults to MAX_SLACK (practical passage-planning view). |
40
40
  | `noaa_marine_get_conditions` | Live marine conditions from an NDBC buoy: wave height/period/direction, wind, sea-surface temp, air temp, and barometric pressure. |
41
+ | `noaa_marine_get_current_profile` | Observed ocean-current depth profile from an NDBC ADCP buoy: speed and direction at each depth bin. Distinct from `noaa_marine_get_currents`, which is a CO-OPS tidal-current forecast. |
41
42
 
42
43
  ### `noaa_marine_find_stations`
43
44
 
44
45
  Unified station discovery across CO-OPS (3,450+ tide/water-level stations, 4,430+ current stations) and NDBC (1,354+ active buoys worldwide).
45
46
 
46
- - Filter by proximity (latitude/longitude + radius), name substring, state/territory, source (CO-OPS vs NDBC), or type (tide, current, water_level, buoy, met)
47
- - Returns unified station list with source, type, capabilities, coordinates, and distance
47
+ - Filter by proximity (latitude/longitude + radius), name substring, state/territory, source (CO-OPS vs NDBC), or `types`: data capabilities (tide, current, water_level, met, current_profile) or NDBC platform class (buoy)
48
+ - Returns a unified station list with source, coordinates, distance, data capabilities, and — for NDBC — the physical platform class (buoy, fixed, oilrig, dart, tao, usv, other)
48
49
  - Station lists are cached in-memory (6-hour TTL) — first call after startup may be slightly slower
49
50
  - Required first step: CO-OPS and NDBC use non-overlapping ID systems; guessing a station ID reliably fails
50
51
 
@@ -94,11 +95,22 @@ Live NDBC buoy observations (most recent ~45 days, updated every 10 minutes).
94
95
  - All sensor fields nullable (`null` when buoy sensor did not report — normal for offshore buoys)
95
96
  - All values in SI units except `TIDE` (feet) and `VIS` (nautical miles), which are rarely populated at offshore buoys
96
97
 
98
+ ---
99
+
100
+ ### `noaa_marine_get_current_profile`
101
+
102
+ Observed ocean-current depth profile from an NDBC ADCP buoy — the most recent measurement at each depth bin.
103
+
104
+ - Depth (m), direction (degrees true, the direction the current flows toward), and speed (cm/s) per bin
105
+ - Distinct from `noaa_marine_get_currents`: this is an NDBC *observed* acoustic-Doppler measurement, not a CO-OPS tidal-current *prediction*
106
+ - Most NDBC stations serve no ADCP profile — use `find_stations` with `source="ndbc"` and `types: ["current_profile"]` to discover the ones that do
107
+ - Direction or speed is `null` for a bin when NDBC did not report that component
108
+
97
109
  ## Resources and prompts
98
110
 
99
111
  | Type | Name | Description |
100
112
  |:-----|:-----|:------------|
101
- | Resource | `noaa-marine://station/{station_id}` | Metadata for a CO-OPS or NDBC station by ID: name, coordinates, source, capabilities, and state. |
113
+ | Resource | `noaa-marine://station/{station_id}` | Metadata for a CO-OPS or NDBC station by ID: name, coordinates, source, data capabilities, state, and — for NDBC — physical platform class. |
102
114
 
103
115
  All resource data is also reachable via tools. Use `noaa_marine_find_stations` to discover station IDs before accessing the resource.
104
116
 
@@ -125,7 +137,7 @@ Agent-friendly output:
125
137
  - Datum echoed on every tide/water-level response — agents can state units and reference correctly without assumptions
126
138
  - `total_found` on `find_stations` shows count before `limit` slice so agents know whether to re-query
127
139
  - All NDBC sensor fields explicitly nullable with per-field unit documentation — agents don't fabricate missing readings
128
- - Typed station source (`coops` | `ndbc`) and type fields on every station record — agents can branch on data, not string parsing
140
+ - Typed station source (`coops` | `ndbc`) on every station record, plus a data-capability `type` and (NDBC only) a `platform` class where applicable — agents can branch on data, not string parsing
129
141
 
130
142
  ## Getting started
131
143
 
@@ -0,0 +1,22 @@
1
+ ---
2
+ summary: "Adds noaa_marine_get_current_profile (NDBC observed currents) and a current_profile filter; type is now purely the data-capability axis with platform as a separate field, and the fabricated buoy capability is removed — breaking output changes"
3
+ breaking: true
4
+ security: false
5
+ ---
6
+
7
+ # 0.2.0 — 2026-07-16
8
+
9
+ ## Added
10
+
11
+ - **`noaa_marine_get_current_profile`** — new tool reading an NDBC station's `.adcp` realtime feed for the latest observed ocean-current profile: depth (m), direction (degrees true), and speed (cm/s) per depth bin. Distinct from `noaa_marine_get_currents`, which returns CO-OPS tidal-current *predictions*, not observed data. ([#15](https://github.com/cyanheads/noaa-marine-mcp-server/issues/15))
12
+ - **`current_profile`** — new `types` filter value on `noaa_marine_find_stations`, reaching NDBC stations with observed-current data; previously no filter value matched them. ([#15](https://github.com/cyanheads/noaa-marine-mcp-server/issues/15))
13
+
14
+ ## Changed
15
+
16
+ - **`platform`** — new field on `noaa_marine_find_stations` NDBC rows and the station resource: the NDBC physical platform class (`buoy`, `fixed`, `oilrig`, `dart`, `tao`, `usv`, `other`). Absent for CO-OPS, which has no platform taxonomy. ([#14](https://github.com/cyanheads/noaa-marine-mcp-server/issues/14))
17
+ - **`type`** — now exclusively the data-capability axis (`tide`, `current`, `water_level`, `met`, `current_profile`), consistent between `find_stations` and the station resource, and optional — omitted when a station has no data capability. The resource previously emitted CO-OPS's undocumented station reference code (R/T/S) here instead. ([#14](https://github.com/cyanheads/noaa-marine-mcp-server/issues/14))
18
+ - **NDBC observed-currents capability** — renamed `currents` → `current_profile` in `capabilities`, `type`, and the `types` filter, removing its one-letter collision with CO-OPS's `current` (tidal-current predictions). ([#15](https://github.com/cyanheads/noaa-marine-mcp-server/issues/15))
19
+
20
+ ## Fixed
21
+
22
+ - **Fabricated `buoy` capability** — `noaa_marine_find_stations` and the station resource no longer report `capabilities: ["buoy"]` / `type: "buoy"` for an NDBC station with no reported met or current data; such a station now reports an empty `capabilities` array, and the `types` filter's `buoy` value matches a station's real platform class instead of falling back to any station with no other capability. ([#13](https://github.com/cyanheads/noaa-marine-mcp-server/issues/13))
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { getServerConfig } from './config/server-config.js';
8
8
  import { noaaMarineStationResource } from './mcp-server/resources/definitions/noaa-marine-station.resource.js';
9
9
  import { noaaMarineFindStations } from './mcp-server/tools/definitions/noaa-marine-find-stations.tool.js';
10
10
  import { noaaMarineGetConditions } from './mcp-server/tools/definitions/noaa-marine-get-conditions.tool.js';
11
+ import { noaaMarineGetCurrentProfile } from './mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.js';
11
12
  import { noaaMarineGetCurrents } from './mcp-server/tools/definitions/noaa-marine-get-currents.tool.js';
12
13
  import { noaaMarineGetTidePredictions } from './mcp-server/tools/definitions/noaa-marine-get-tide-predictions.tool.js';
13
14
  import { noaaMarineGetWaterLevel } from './mcp-server/tools/definitions/noaa-marine-get-water-level.tool.js';
@@ -22,6 +23,7 @@ await createApp({
22
23
  noaaMarineGetWaterLevel,
23
24
  noaaMarineGetCurrents,
24
25
  noaaMarineGetConditions,
26
+ noaaMarineGetCurrentProfile,
25
27
  ],
26
28
  resources: [noaaMarineStationResource],
27
29
  prompts: [],
@@ -30,8 +32,11 @@ await createApp({
30
32
  'then call the appropriate data tool. ' +
31
33
  'CO-OPS provides tide predictions (noaa_marine_get_tide_predictions), ' +
32
34
  'observed water levels and storm surge (noaa_marine_get_water_level), ' +
33
- 'and tidal current predictions (noaa_marine_get_currents). ' +
34
- 'NDBC provides live buoy conditions — waves, wind, sea-surface temp (noaa_marine_get_conditions). ' +
35
+ 'and tidal-current predictions (noaa_marine_get_currents). ' +
36
+ 'NDBC provides live buoy conditions — waves, wind, sea-surface temp (noaa_marine_get_conditions) — ' +
37
+ 'and observed ocean-current depth profiles (noaa_marine_get_current_profile). ' +
38
+ 'The two current tools are distinct: get_currents is CO-OPS tidal-current predictions (forecast), ' +
39
+ 'get_current_profile is NDBC observed depth-binned currents from an ADCP buoy. ' +
35
40
  'All water height data is referenced to MLLW by default (US nautical chart datum).',
36
41
  setup(core) {
37
42
  const serverConfig = getServerConfig();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oEAAoE,CAAC;AAC/G,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,mEAAmE,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,iEAAiE,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,yEAAyE,CAAC;AACvH,OAAO,EAAE,uBAAuB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,wBAAwB;IAC/B,KAAK,EAAE;QACL,sBAAsB;QACtB,4BAA4B;QAC5B,uBAAuB;QACvB,qBAAqB;QACrB,uBAAuB;KACxB;IACD,SAAS,EAAE,CAAC,yBAAyB,CAAC;IACtC,OAAO,EAAE,EAAE;IACX,YAAY,EACV,iDAAiD;QACjD,qFAAqF;QACrF,uCAAuC;QACvC,uEAAuE;QACvE,uEAAuE;QACvE,4DAA4D;QAC5D,mGAAmG;QACnG,mFAAmF;IAErF,KAAK,CAAC,IAAI;QACR,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC1D,eAAe,EAAE,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oEAAoE,CAAC;AAC/G,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,mEAAmE,CAAC;AAC5G,OAAO,EAAE,2BAA2B,EAAE,MAAM,wEAAwE,CAAC;AACrH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iEAAiE,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,yEAAyE,CAAC;AACvH,OAAO,EAAE,uBAAuB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,wBAAwB;IAC/B,KAAK,EAAE;QACL,sBAAsB;QACtB,4BAA4B;QAC5B,uBAAuB;QACvB,qBAAqB;QACrB,uBAAuB;QACvB,2BAA2B;KAC5B;IACD,SAAS,EAAE,CAAC,yBAAyB,CAAC;IACtC,OAAO,EAAE,EAAE;IACX,YAAY,EACV,iDAAiD;QACjD,qFAAqF;QACrF,uCAAuC;QACvC,uEAAuE;QACvE,uEAAuE;QACvE,4DAA4D;QAC5D,oGAAoG;QACpG,+EAA+E;QAC/E,mGAAmG;QACnG,gFAAgF;QAChF,mFAAmF;IAErF,KAAK,CAAC,IAAI;QACR,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC1D,eAAe,EAAE,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"noaa-marine-station.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/noaa-marine-station.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAKrD,eAAO,MAAM,yBAAyB;;wCA0FpC,CAAC"}
1
+ {"version":3,"file":"noaa-marine-station.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/noaa-marine-station.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAKrD,eAAO,MAAM,yBAAyB;;wCAoGpC,CAAC"}
@@ -8,7 +8,10 @@ import { getCoopsService } from '../../../services/coops/coops-service.js';
8
8
  import { getNdbcService } from '../../../services/ndbc/ndbc-service.js';
9
9
  export const noaaMarineStationResource = resource('noaa-marine://station/{station_id}', {
10
10
  name: 'noaa_marine_station',
11
- description: 'Metadata for a CO-OPS or NDBC station by ID: name, coordinates, source, capabilities, and state. ' +
11
+ description: 'Metadata for a CO-OPS or NDBC station by ID: name, coordinates, source, data capabilities, and — for NDBC — ' +
12
+ 'the physical platform class. `type` is the primary data capability (same meaning as in noaa_marine_find_stations), ' +
13
+ 'omitted when the station reports no data capability; `platform` is the NDBC platform class ' +
14
+ '(buoy, fixed, oilrig, dart, tao, usv, other) and is a separate axis, absent for CO-OPS. ' +
12
15
  'CO-OPS station IDs are numeric (tide/water-level) or alphanumeric (current stations). ' +
13
16
  'NDBC station IDs are 5-character alphanumeric codes. ' +
14
17
  'Use noaa_marine_find_stations to discover station IDs.',
@@ -39,6 +42,7 @@ export const noaaMarineStationResource = resource('noaa-marine://station/{statio
39
42
  current.find((s) => s.id.toUpperCase() === id) ??
40
43
  waterLevel.find((s) => s.id.toUpperCase() === id);
41
44
  if (match) {
45
+ // A CO-OPS match came from one of the three lists, so at least one capability is present.
42
46
  const caps = [];
43
47
  if (tide.some((s) => s.id.toUpperCase() === id))
44
48
  caps.push('tide');
@@ -46,8 +50,6 @@ export const noaaMarineStationResource = resource('noaa-marine://station/{statio
46
50
  caps.push('current');
47
51
  if (waterLevel.some((s) => s.id.toUpperCase() === id))
48
52
  caps.push('water_level');
49
- if (caps.length === 0)
50
- caps.push('tide');
51
53
  const result = {
52
54
  station_id: match.id,
53
55
  name: match.name,
@@ -56,10 +58,13 @@ export const noaaMarineStationResource = resource('noaa-marine://station/{statio
56
58
  longitude: match.lng,
57
59
  capabilities: caps,
58
60
  };
61
+ // `type` is the primary data capability — the same axis find_stations reports. The CO-OPS
62
+ // catalog `type` code (R/T/S reference classes) is a different, undocumented axis and is not
63
+ // surfaced here; CO-OPS has no platform class.
64
+ if (caps[0])
65
+ result.type = caps[0];
59
66
  if (match.state)
60
67
  result.state = match.state;
61
- if (match.type)
62
- result.type = match.type;
63
68
  return result;
64
69
  }
65
70
  }
@@ -67,22 +72,27 @@ export const noaaMarineStationResource = resource('noaa-marine://station/{statio
67
72
  if (ndbcResult.status === 'fulfilled') {
68
73
  const match = ndbcResult.value.find((s) => s.id.toUpperCase() === id);
69
74
  if (match) {
75
+ // Data capabilities from the catalog flags only — no fabricated "buoy" when both are off (#13).
76
+ // `current_profile` (NDBC observed ocean currents) is named apart from CO-OPS `current`.
70
77
  const caps = [];
71
78
  if (match.hasMet)
72
79
  caps.push('met');
73
80
  if (match.hasCurrents)
74
- caps.push('currents');
75
- if (caps.length === 0)
76
- caps.push('buoy');
81
+ caps.push('current_profile');
77
82
  const result = {
78
83
  station_id: match.id,
79
84
  name: match.name,
80
85
  source: 'ndbc',
81
86
  latitude: match.lat,
82
87
  longitude: match.lon,
83
- type: match.type ?? 'buoy',
84
88
  capabilities: caps,
85
89
  };
90
+ // `type` is the primary data capability (same axis as find_stations), omitted when the
91
+ // station serves no data. `platform` is the NDBC physical class — a separate axis (#14).
92
+ if (caps[0])
93
+ result.type = caps[0];
94
+ if (match.type)
95
+ result.platform = match.type;
86
96
  if (match.owner)
87
97
  result.owner = match.owner;
88
98
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"noaa-marine-station.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/noaa-marine-station.resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"noaa-marine-station.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/noaa-marine-station.resource.ts"],"names":[],"mappings":"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"}
@@ -77,6 +77,7 @@ export declare const noaaMarineFindStations: import("@cyanheads/mcp-ts-core").To
77
77
  met: "met";
78
78
  tide: "tide";
79
79
  current: "current";
80
+ current_profile: "current_profile";
80
81
  buoy: "buoy";
81
82
  }>>>;
82
83
  limit: z.ZodDefault<z.ZodNumber>;
@@ -88,7 +89,8 @@ export declare const noaaMarineFindStations: import("@cyanheads/mcp-ts-core").To
88
89
  coops: "coops";
89
90
  ndbc: "ndbc";
90
91
  }>;
91
- type: z.ZodString;
92
+ type: z.ZodOptional<z.ZodString>;
93
+ platform: z.ZodOptional<z.ZodString>;
92
94
  latitude: z.ZodNumber;
93
95
  longitude: z.ZodNumber;
94
96
  distance_km: z.ZodOptional<z.ZodNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"noaa-marine-find-stations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-find-stations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA0EjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmWjC,CAAC"}
1
+ {"version":3,"file":"noaa-marine-find-stations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-find-stations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA0EjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0YjC,CAAC"}
@@ -76,10 +76,13 @@ const STATE_CODES = [
76
76
  export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
77
77
  title: 'Find Marine Stations',
78
78
  description: 'Find CO-OPS tide/water-level/current stations and NDBC buoys near a location or by name/state. ' +
79
- 'Returns a unified station list with source, type, capabilities, and coordinates. ' +
79
+ 'Returns a unified station list with source, data capabilities, coordinates, and — for NDBC — the physical platform class. ' +
80
80
  'This is the required first step to resolve place names or coordinates to station IDs before calling data tools. ' +
81
81
  'CO-OPS station IDs are numeric (e.g. 9447130 for Seattle); current station IDs are alphanumeric (e.g. ACT4176). ' +
82
82
  'NDBC buoy IDs are 5-character alphanumeric codes (e.g. 46041). ' +
83
+ 'Two axes are reported separately: `capabilities`/`type` describe the data products a station serves ' +
84
+ '(tide, current, water_level, met, current_profile), while `platform` is the NDBC physical classification ' +
85
+ '(buoy, fixed, oilrig, dart, tao, usv, other). CO-OPS stations carry no platform class. ' +
83
86
  'Provide latitude and longitude together for proximity search, or query/state for name-based search — both may be combined. ' +
84
87
  'Note: CO-OPS current stations are cataloged by monitoring capability, not prediction availability. ' +
85
88
  'If noaa_marine_get_currents returns no_predictions for a station, try the next nearest current station.',
@@ -122,15 +125,20 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
122
125
  .describe('Data source to search: coops (tide/water-level/current stations), ndbc (buoys), or all (default).'),
123
126
  types: z
124
127
  .array(z
125
- .enum(['tide', 'current', 'water_level', 'buoy', 'met'])
126
- .describe('Station capability, matched against the capabilities list of each station: tide (CO-OPS tide predictions), ' +
127
- 'current (CO-OPS current predictions), water_level (CO-OPS observed water levels), ' +
128
- 'met (NDBC meteorological — the stations noaa_marine_get_conditions reads), ' +
129
- 'buoy (NDBC station reporting neither met nor currents).'))
128
+ .enum(['tide', 'current', 'water_level', 'met', 'current_profile', 'buoy'])
129
+ .describe("Filter value. Five are data capabilities, matched against a station's capabilities list: " +
130
+ 'tide (CO-OPS tide predictions → noaa_marine_get_tide_predictions), ' +
131
+ 'current (CO-OPS tidal-current predictions → noaa_marine_get_currents), ' +
132
+ 'water_level (CO-OPS observed water levels → noaa_marine_get_water_level), ' +
133
+ 'met (NDBC meteorological → noaa_marine_get_conditions), ' +
134
+ 'current_profile (NDBC observed ocean-current depth profile → noaa_marine_get_current_profile; ' +
135
+ 'note this is a different data product and source than CO-OPS `current`). ' +
136
+ 'The sixth, buoy, is a physical-platform filter (NDBC platform class equals buoy), not a data ' +
137
+ 'capability — use it to select buoy-class platforms regardless of what data they serve.'))
130
138
  .optional()
131
- .describe('Filter by station capability. Every returned station carries at least one of the requested values in its ' +
132
- 'capabilities list. Omit to return all types. NDBC stations whose only capability is currents match none ' +
133
- 'of these values — reach them with source="ndbc" and no types filter, or by name/ID via query.'),
139
+ .describe('Filter by data capability or NDBC platform class. Every returned station matches at least one requested ' +
140
+ 'value — a capability value against its capabilities list, or buoy against its platform class. ' +
141
+ 'Omit to return all stations.'),
134
142
  limit: z
135
143
  .number()
136
144
  .int()
@@ -150,10 +158,18 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
150
158
  .describe('Data source: coops (CO-OPS) or ndbc (NDBC buoy).'),
151
159
  type: z
152
160
  .string()
153
- .describe('The capability this row leads with — always one of the values in capabilities. When a types filter ' +
154
- 'is set this is the first requested capability the station has, so it never contradicts the filter; ' +
155
- 'otherwise it is the first capability. This is a data-product capability, not the physical platform ' +
156
- 'classification — for that, read the noaa-marine://station/{station_id} resource.'),
161
+ .optional()
162
+ .describe('The data capability this row leads with — always one of the values in capabilities. When a types ' +
163
+ 'filter of capability values is set this is the first requested capability the station has, so it ' +
164
+ 'never contradicts the filter; otherwise it is the first capability. Omitted when the station has ' +
165
+ 'no data capability (e.g. a bare buoy/fixed platform matched only by a platform filter) — read ' +
166
+ 'platform for its identity. This is a data-product axis, never the physical platform class.'),
167
+ platform: z
168
+ .string()
169
+ .optional()
170
+ .describe('NDBC physical platform class: buoy, fixed, oilrig, dart, tao, usv, or other. A different axis than ' +
171
+ 'type/capabilities (which describe data products). Omitted for CO-OPS stations — CO-OPS publishes ' +
172
+ 'no platform taxonomy.'),
157
173
  latitude: z.number().describe('Station latitude in decimal degrees.'),
158
174
  longitude: z.number().describe('Station longitude in decimal degrees.'),
159
175
  distance_km: z
@@ -166,7 +182,8 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
166
182
  .describe('US state or territory code (CO-OPS stations only).'),
167
183
  capabilities: z
168
184
  .array(z.string().describe('Capability identifier, e.g. "tide", "water_level".'))
169
- .describe('List of data products available at this station.'),
185
+ .describe('Data products available at this station: any of tide, current, water_level (CO-OPS) or met, ' +
186
+ 'current_profile (NDBC). Empty when the station reports no data capability — platform still identifies it.'),
170
187
  })
171
188
  .describe('A single station matching the search criteria.'))
172
189
  .describe('Stations matching the search criteria, sorted by distance (if lat/lon provided) or name.'),
@@ -209,15 +226,21 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
209
226
  const query = input.query?.trim().toLowerCase();
210
227
  // An empty types array means the same thing as no types array.
211
228
  const typeFilter = input.types?.length ? input.types : undefined;
212
- /** True when the station carries at least one of the requested capabilities. */
213
- const matchesTypeFilter = (capabilities) => !typeFilter || typeFilter.some((t) => capabilities.includes(t));
214
229
  /**
215
- * The capability a row leads with. Under a types filter this is the first requested
216
- * capability the station actually has, so `type` can never contradict the filter that
217
- * selected the row; unfiltered, it is the station's first capability. Both this and
218
- * matchesTypeFilter read the same capabilities array, so the two agree by construction.
230
+ * True when the station carries at least one of the requested filter values among its
231
+ * match tokens. Callers pass a station's data capabilities plus (for NDBC) its platform
232
+ * class, so a `buoy` platform filter matches a bare platform and a `met` filter matches a
233
+ * capability — both flow through one predicate.
234
+ */
235
+ const matchesTypeFilter = (tokens) => !typeFilter || typeFilter.some((t) => tokens.includes(t));
236
+ /**
237
+ * The data capability a row leads with — always drawn from `capabilities`, never the
238
+ * platform class. Under a capability filter this is the first requested capability the
239
+ * station has, so `type` never contradicts it; a platform-only filter (`buoy`) matches
240
+ * nothing in capabilities, so `type` falls to the first capability, or undefined when the
241
+ * station has none (its platform then carries its identity).
219
242
  */
220
- const primaryTypeFor = (capabilities) => typeFilter?.find((t) => capabilities.includes(t)) ?? capabilities[0] ?? 'unknown';
243
+ const primaryTypeFor = (capabilities) => typeFilter?.find((t) => capabilities.includes(t)) ?? capabilities[0];
221
244
  const results = [];
222
245
  // Fetch CO-OPS and NDBC lists in parallel.
223
246
  // `state` is a CO-OPS-only filter — NDBC buoys carry no state, so a state-scoped
@@ -262,11 +285,13 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
262
285
  station_id: s.id,
263
286
  name: s.name,
264
287
  source: 'coops',
265
- type: primaryTypeFor(s.capabilities),
266
288
  latitude: s.lat,
267
289
  longitude: s.lng,
268
290
  capabilities: s.capabilities,
269
291
  };
292
+ const coopsType = primaryTypeFor(s.capabilities);
293
+ if (coopsType)
294
+ entry.type = coopsType;
270
295
  if (s.state)
271
296
  entry.state = s.state;
272
297
  if (center) {
@@ -281,18 +306,22 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
281
306
  // Process NDBC stations
282
307
  if (ndbcResult.status === 'fulfilled' && ndbcResult.value) {
283
308
  for (const s of ndbcResult.value) {
284
- // Derive capabilities from the NDBC flags BEFORE filtering, so the filter and the
285
- // reported capabilities read the same array. The station's `type` attribute is a
286
- // platform classification (buoy/fixed/oilrig/dart/…), not a capability — matching
287
- // it against a `met` filter admits buoys NDBC flags as met="n".
309
+ // Data capabilities come only from the NDBC catalog flags — never the platform class.
310
+ // `current_profile` is NDBC observed ocean currents (the .adcp profile
311
+ // noaa_marine_get_current_profile reads), named apart from CO-OPS `current` (tidal-current
312
+ // predictions) so both stay filterable without a one-letter collision. When both flags are
313
+ // off the list stays empty — a bare platform is not a fabricated "buoy" capability (#13).
288
314
  const capabilities = [];
289
315
  if (s.hasMet)
290
316
  capabilities.push('met');
291
317
  if (s.hasCurrents)
292
- capabilities.push('currents');
293
- if (capabilities.length === 0)
294
- capabilities.push('buoy');
295
- if (!matchesTypeFilter(capabilities))
318
+ capabilities.push('current_profile');
319
+ // Platform class (buoy/fixed/oilrig/dart/tao/usv/other) is a separate axis. Fold it into
320
+ // the tokens the filter matches so a `buoy` platform filter reaches bare platforms; only
321
+ // platform values present in the `types` enum (currently just `buoy`) are ever requestable.
322
+ const platform = s.type;
323
+ const matchTokens = platform ? [...capabilities, platform] : capabilities;
324
+ if (!matchesTypeFilter(matchTokens))
296
325
  continue;
297
326
  if (query && !s.name.toLowerCase().includes(query) && !s.id.toLowerCase().includes(query))
298
327
  continue;
@@ -300,11 +329,15 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
300
329
  station_id: s.id,
301
330
  name: s.name,
302
331
  source: 'ndbc',
303
- type: primaryTypeFor(capabilities),
304
332
  latitude: s.lat,
305
333
  longitude: s.lon,
306
334
  capabilities,
307
335
  };
336
+ const ndbcType = primaryTypeFor(capabilities);
337
+ if (ndbcType)
338
+ entry.type = ndbcType;
339
+ if (platform)
340
+ entry.platform = platform;
308
341
  if (center) {
309
342
  const dist = haversineKm(center.lat, center.lon, s.lat, s.lon);
310
343
  if (dist > input.radius_km)
@@ -350,7 +383,9 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
350
383
  for (const s of result.stations) {
351
384
  const dist = s.distance_km !== undefined ? ` · ${s.distance_km} km` : '';
352
385
  const state = s.state ? ` · ${s.state}` : '';
353
- lines.push(`### ${s.name} (${s.station_id})`, `**Source:** ${s.source.toUpperCase()} · **Type:** ${s.type}${dist}${state}`, `**Coordinates:** ${s.latitude}, ${s.longitude}`, `**Capabilities:** ${s.capabilities.join(', ')}`, '');
386
+ const typeStr = s.type ? ` · **Type:** ${s.type}` : '';
387
+ const platformStr = s.platform ? ` · **Platform:** ${s.platform}` : '';
388
+ lines.push(`### ${s.name} (${s.station_id})`, `**Source:** ${s.source.toUpperCase()}${typeStr}${platformStr}${dist}${state}`, `**Coordinates:** ${s.latitude}, ${s.longitude}`, `**Capabilities:** ${s.capabilities.length > 0 ? s.capabilities.join(', ') : 'none reported'}`, '');
354
389
  }
355
390
  return [{ type: 'text', text: lines.join('\n') }];
356
391
  },
@@ -1 +1 @@
1
- {"version":3,"file":"noaa-marine-find-stations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-find-stations.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"noaa-marine-find-stations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-find-stations.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @fileoverview noaa_marine_get_current_profile tool — observed depth-binned currents from an NDBC ADCP buoy.
3
+ * @module mcp-server/tools/definitions/noaa-marine-get-current-profile.tool
4
+ */
5
+ import { z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ export declare const noaaMarineGetCurrentProfile: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
8
+ station_id: z.ZodString;
9
+ }, z.core.$strip>, z.ZodObject<{
10
+ station_id: z.ZodString;
11
+ station_name: z.ZodString;
12
+ latitude: z.ZodNullable<z.ZodNumber>;
13
+ longitude: z.ZodNullable<z.ZodNumber>;
14
+ observed_at: z.ZodString;
15
+ source: z.ZodString;
16
+ bin_count: z.ZodNumber;
17
+ bins: z.ZodArray<z.ZodObject<{
18
+ depth_m: z.ZodNumber;
19
+ direction_deg: z.ZodNullable<z.ZodNumber>;
20
+ speed_cm_s: z.ZodNullable<z.ZodNumber>;
21
+ }, z.core.$strip>>;
22
+ }, z.core.$strip>, readonly [{
23
+ readonly reason: "profile_not_found";
24
+ readonly code: JsonRpcErrorCode.NotFound;
25
+ readonly when: "NDBC returned 404 for the station — no ADCP current-profile file exists for it.";
26
+ readonly recovery: "Find a current-profile-capable station with noaa_marine_find_stations using source=\"ndbc\" and types=[\"current_profile\"] — most NDBC stations serve no ADCP profile.";
27
+ }, {
28
+ readonly reason: "no_current_data";
29
+ readonly code: JsonRpcErrorCode.NotFound;
30
+ readonly when: "The ADCP file exists but has no usable data rows — profiler offline or every bin missing.";
31
+ readonly recovery: "This station may be temporarily offline — try another from noaa_marine_find_stations with source=\"ndbc\" and types=[\"current_profile\"].";
32
+ }], undefined>;
33
+ //# sourceMappingURL=noaa-marine-get-current-profile.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noaa-marine-get-current-profile.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;cAuJtC,CAAC"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * @fileoverview noaa_marine_get_current_profile tool — observed depth-binned currents from an NDBC ADCP buoy.
3
+ * @module mcp-server/tools/definitions/noaa-marine-get-current-profile.tool
4
+ */
5
+ import { tool, z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
7
+ import { getNdbcService } from '../../../services/ndbc/ndbc-service.js';
8
+ export const noaaMarineGetCurrentProfile = tool('noaa_marine_get_current_profile', {
9
+ title: 'Get Ocean Current Profile',
10
+ description: 'Observed ocean-current depth profile from an NDBC ADCP buoy: the most recent measurement of ' +
11
+ 'current speed and direction at each depth bin. Returns depth in meters, direction in degrees ' +
12
+ 'true (the direction the current flows toward), and speed in cm/s. Distinct from ' +
13
+ 'noaa_marine_get_currents, which returns CO-OPS tidal-current predictions (forecast max flood/ebb/slack) ' +
14
+ 'rather than these observed acoustic-Doppler measurements. A depth bin is reported whenever NDBC ' +
15
+ 'gives it a depth; its direction or speed is null when the sensor did not report that component. ' +
16
+ 'Use noaa_marine_find_stations with source="ndbc" and types=["current_profile"] to find station IDs — ' +
17
+ 'most NDBC stations serve no ADCP profile, so an unfiltered search returns IDs this tool cannot read.',
18
+ annotations: { readOnlyHint: true, openWorldHint: true },
19
+ input: z.object({
20
+ station_id: z
21
+ .string()
22
+ .regex(/^[A-Za-z0-9_-]{1,20}$/)
23
+ .describe('NDBC station ID (5-character alphanumeric, e.g. "44033"). ' +
24
+ 'Obtain from noaa_marine_find_stations with source="ndbc" and types=["current_profile"].'),
25
+ }),
26
+ output: z.object({
27
+ station_id: z.string().describe('Station ID echoed from the request — for chaining.'),
28
+ station_name: z.string().describe('Station name from the NDBC active stations list.'),
29
+ latitude: z
30
+ .number()
31
+ .nullable()
32
+ .describe('Station latitude in decimal degrees. Null when the station is absent from the NDBC active-stations list — the ADCP feed carries current data but no coordinates.'),
33
+ longitude: z
34
+ .number()
35
+ .nullable()
36
+ .describe('Station longitude in decimal degrees. Null when the station is absent from the NDBC active-stations list.'),
37
+ observed_at: z.string().describe('ISO 8601 UTC timestamp of the observation.'),
38
+ source: z.string().describe('Data source — always "ndbc" for this tool.'),
39
+ bin_count: z.number().describe('Number of depth bins in the profile.'),
40
+ bins: z
41
+ .array(z
42
+ .object({
43
+ depth_m: z.number().describe('Bin depth below the surface in meters.'),
44
+ direction_deg: z
45
+ .number()
46
+ .nullable()
47
+ .describe('Direction the current flows toward, in degrees true (0–360). Null if not reported for this bin.'),
48
+ speed_cm_s: z
49
+ .number()
50
+ .nullable()
51
+ .describe('Current speed in cm/s. Null if not reported for this bin.'),
52
+ })
53
+ .describe('A single depth-bin current measurement.'))
54
+ .describe('Depth-binned current measurements, shallowest first (NDBC source order).'),
55
+ }),
56
+ errors: [
57
+ {
58
+ reason: 'profile_not_found',
59
+ code: JsonRpcErrorCode.NotFound,
60
+ when: 'NDBC returned 404 for the station — no ADCP current-profile file exists for it.',
61
+ recovery: 'Find a current-profile-capable station with noaa_marine_find_stations using source="ndbc" and types=["current_profile"] — most NDBC stations serve no ADCP profile.',
62
+ },
63
+ {
64
+ reason: 'no_current_data',
65
+ code: JsonRpcErrorCode.NotFound,
66
+ when: 'The ADCP file exists but has no usable data rows — profiler offline or every bin missing.',
67
+ recovery: 'This station may be temporarily offline — try another from noaa_marine_find_stations with source="ndbc" and types=["current_profile"].',
68
+ },
69
+ ],
70
+ async handler(input, ctx) {
71
+ const ndbcSvc = getNdbcService();
72
+ // Station metadata for name/coordinates.
73
+ const stations = await ndbcSvc.getActiveStations(ctx);
74
+ const meta = stations.find((s) => s.id.toUpperCase() === input.station_id.toUpperCase());
75
+ let profile;
76
+ try {
77
+ profile = await ndbcSvc.fetchCurrentProfile(input.station_id, ctx);
78
+ }
79
+ catch (err) {
80
+ // A missing ADCP file and an empty/offline profiler both surface as NotFound:
81
+ // fetchWithTimeout throws a bare 404 (data.statusCode: 404, no reason) before the
82
+ // service's own check runs, while the service's notFound() for an existing-but-empty
83
+ // file carries data.reason: 'no_current_data'. Inspect the reason so an offline
84
+ // profiler isn't mislabeled as a station that serves no ADCP data at all.
85
+ if (err instanceof McpError && err.code === JsonRpcErrorCode.NotFound) {
86
+ const reason = err.data?.reason;
87
+ if (reason === 'no_current_data') {
88
+ throw ctx.fail('no_current_data', `NDBC station ${input.station_id} reported no usable current data — the ADCP file exists but every depth bin is missing (profiler offline or sensor failure).`, { ...ctx.recoveryFor('no_current_data') });
89
+ }
90
+ throw ctx.fail('profile_not_found', `NDBC has no ADCP current-profile file for station ${input.station_id} — use noaa_marine_find_stations with source="ndbc" and types=["current_profile"] to find a current-profile-capable station.`, { ...ctx.recoveryFor('profile_not_found') });
91
+ }
92
+ throw err;
93
+ }
94
+ ctx.log.info('NDBC current profile fetched', {
95
+ station_id: input.station_id,
96
+ observed_at: profile.observedAt,
97
+ bin_count: profile.bins.length,
98
+ });
99
+ return {
100
+ station_id: input.station_id.toUpperCase(),
101
+ station_name: meta?.name ?? input.station_id,
102
+ latitude: meta?.lat ?? null,
103
+ longitude: meta?.lon ?? null,
104
+ observed_at: profile.observedAt,
105
+ source: 'ndbc',
106
+ bin_count: profile.bins.length,
107
+ bins: profile.bins.map((b) => ({
108
+ depth_m: b.depthM,
109
+ direction_deg: b.directionDeg,
110
+ speed_cm_s: b.speedCmS,
111
+ })),
112
+ };
113
+ },
114
+ format: (result) => {
115
+ const lines = [
116
+ `## Ocean Current Profile — ${result.station_name} (${result.station_id})`,
117
+ `**Observed at:** ${result.observed_at} · **Source:** ${result.source} · **Bins:** ${result.bin_count}`,
118
+ `**Location:** ${result.latitude ?? 'unknown'}, ${result.longitude ?? 'unknown'}`,
119
+ '',
120
+ '| Depth (m) | Direction (°T) | Speed (cm/s) |',
121
+ '|---:|---:|---:|',
122
+ ];
123
+ for (const b of result.bins) {
124
+ const dir = b.direction_deg !== null ? `${b.direction_deg}` : 'not reported';
125
+ const spd = b.speed_cm_s !== null ? `${b.speed_cm_s}` : 'not reported';
126
+ lines.push(`| ${b.depth_m} | ${dir} | ${spd} |`);
127
+ }
128
+ return [{ type: 'text', text: lines.join('\n') }];
129
+ },
130
+ });
131
+ //# sourceMappingURL=noaa-marine-get-current-profile.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noaa-marine-get-current-profile.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"noaa-marine-get-currents.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-get-currents.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAI3E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuThC,CAAC"}
1
+ {"version":3,"file":"noaa-marine-get-currents.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-get-currents.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAI3E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAyThC,CAAC"}
@@ -9,6 +9,8 @@ import { validateCoopsDateRange } from '../../../services/coops/date-range.js';
9
9
  export const noaaMarineGetCurrents = tool('noaa_marine_get_currents', {
10
10
  title: 'Get Tidal Currents',
11
11
  description: 'Tidal current predictions for a CO-OPS current station: max flood/ebb speeds, slack times, and directions. ' +
12
+ 'These are forecast tidal-current predictions from CO-OPS — distinct from noaa_marine_get_current_profile, which ' +
13
+ 'returns NDBC observed ocean-current measurements binned by depth. ' +
12
14
  'Defaults to MAX_SLACK interval — the practical planning view showing when currents peak and when slack water occurs. ' +
13
15
  'Optionally returns 6-minute continuous predictions for detailed analysis. ' +
14
16
  'Current station IDs use alphanumeric format (e.g. ACT4176), distinct from numeric tide/water-level IDs. ' +
@@ -1 +1 @@
1
- {"version":3,"file":"noaa-marine-get-currents.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-get-currents.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,0BAA0B,EAAE;IACpE,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,6GAA6G;QAC7G,uHAAuH;QACvH,4EAA4E;QAC5E,0GAA0G;QAC1G,+CAA+C;QAC/C,2FAA2F;IAC7F,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAE9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,KAAK,CAAC,uBAAuB,CAAC;aAC9B,QAAQ,CACP,4DAA4D;YAC1D,+DAA+D,CAClE;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,KAAK,CAAC,SAAS,CAAC;aAChB,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,KAAK,CAAC,SAAS,CAAC;aAChB,QAAQ,CAAC,2DAA2D,CAAC;QACxE,SAAS,EAAE,CAAC;aACT,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;aAC/B,OAAO,CAAC,SAAS,CAAC;aAClB,QAAQ,CACP,uFAAuF;YACrF,kDAAkD,CACrD;QACH,KAAK,EAAE,CAAC;aACL,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;aAC3B,OAAO,CAAC,SAAS,CAAC;aAClB,QAAQ,CAAC,6CAA6C,CAAC;QAC1D,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aAC3B,OAAO,CAAC,WAAW,CAAC;aACpB,QAAQ,CACP,gGAAgG;YAC9F,sEAAsE,CACzE;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACrF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC/E,MAAM,EAAE,CAAC;aACN,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACvE,IAAI,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;iBAC/B,QAAQ,CACP,+GAA+G,CAChH;YACH,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gEAAgE,CAAC;YAC7E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,qEAAqE,CAAC;SACnF,CAAC;aACD,QAAQ,CAAC,sDAAsD,CAAC,CACpE;aACA,QAAQ,EAAE;aACV,QAAQ,CAAC,uEAAuE,CAAC;QACpF,WAAW,EAAE,CAAC;aACX,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;YAC5E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACnE,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,8GAA8G,CAC/G;SACJ,CAAC;aACD,QAAQ,CAAC,uCAAuC,CAAC,CACrD;aACA,QAAQ,EAAE;aACV,QAAQ,CAAC,qEAAqE,CAAC;KACnF,CAAC;IAEF,MAAM,EAAE;QACN;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,0FAA0F;YAChG,QAAQ,EACN,yGAAyG;SAC5G;QACD;YACE,MAAM,EAAE,oBAAoB;YAC5B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,iFAAiF;YACvF,QAAQ,EACN,wGAAwG;SAC3G;QACD;YACE,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,uDAAuD;YAC7D,QAAQ,EAAE,qEAAqE;SAChF;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,mFAAmF;YACzF,QAAQ,EACN,kHAAkH;SACrH;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,+EAA+E;QAC/E,sFAAsF;QACtF,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,KAAK,EAAE;gBAChD,GAAG,GAAG,CAAC,WAAW,CAAC,oBAAoB,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;YACzB,MAAM,GAAG,CAAC,IAAI,CACZ,qBAAqB,EACrB,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iCAAiC,EAC3E,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAC9C,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAE9B,wEAAwE;QACxE,kGAAkG;QAClG,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YAC7D,GAAG,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,CAAC;YAC1C,GAAG,CAAC,uBAAuB,CACzB;gBACE,OAAO,EAAE,KAAK,CAAC,UAAU;gBACzB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,EACD,GAAG,CACJ;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GACf,eAAe,CAAC,MAAM,KAAK,WAAW;YACpC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC;YAC9D,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;YAC9B,gFAAgF;YAChF,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,GAAG,CAAC,WAAW,KAAK,gBAAgB,EAAE,CAAC;oBACzC,MAAM,GAAG,CAAC,IAAI,CACZ,gBAAgB,EAChB,0CAA0C,KAAK,CAAC,UAAU,6DAA6D,EACvH,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CACzC,CAAC;gBACJ,CAAC;gBACD,+CAA+C;gBAC/C,MAAM,GAAG,CAAC,IAAI,CACZ,mBAAmB,EACnB,iDAAiD,KAAK,CAAC,UAAU,kFAAkF,EACnJ,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAC5C,CAAC;YACJ,CAAC;YACD,uEAAuE;YACvE,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAI,GAAG,CAAC,IAA4C,EAAE,UAAU,CAAC;gBACjF,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;oBACvB,MAAM,GAAG,CAAC,IAAI,CACZ,mBAAmB,EACnB,2BAA2B,KAAK,CAAC,UAAU,kGAAkG,EAC7I,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAC5C,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;QAEhC,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,GAAG,CAAC,IAAI,CACZ,gBAAgB,EAChB,sCAAsC,KAAK,CAAC,UAAU,qBAAqB,EAC3E,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CACzC,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAA8B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC/D,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACvB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,OAAO,CAAC;gBAEd,MAAM,KAAK,GAKP;oBACF,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI;iBACL,CAAC;gBACF,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;oBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;wBAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,MAAM,GACV,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;wBAAE,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;gBAChD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,yCAAyC,EAAE;gBACtD,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,WAAW,EAAE,MAAM,CAAC,MAAM;aAC3B,CAAC,CAAC;YAEH,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,YAAY,EAAE,WAAW,EAAE,IAAI,IAAI,MAAM,CAAC,WAAW;gBACrD,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM;aACP,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,CAAC,IAAI,CACZ,gBAAgB,EAChB,4CAA4C,KAAK,CAAC,UAAU,qBAAqB,EACjF,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CACzC,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC;YAC3D,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;SACvE,CAAC,CAAC,CAAC;QAEJ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE;YACjD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,KAAK,EAAE,WAAW,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,WAAW,EAAE,IAAI,IAAI,MAAM,CAAC,WAAW;YACrD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAa;YACtB,uBAAuB,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,UAAU,GAAG;YACnE,cAAc,MAAM,CAAC,KAAK,EAAE;YAC5B,EAAE;SACH,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,CAAC,MAAM,qBAAqB,CAAC,CAAC;YACrE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,KAAK,GACT,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,WAAW,CAAC,MAAM,YAAY,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"noaa-marine-get-currents.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-get-currents.tool.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * @module services/ndbc/ndbc-service
4
4
  */
5
5
  import type { Context } from '@cyanheads/mcp-ts-core';
6
- import type { NdbcObservation, NdbcStation } from './types.js';
6
+ import type { NdbcCurrentProfile, NdbcObservation, NdbcStation } from './types.js';
7
7
  export declare class NdbcService {
8
8
  private stationCache;
9
9
  /** Fetch (or return cached) NDBC active stations. */
@@ -12,6 +12,18 @@ export declare class NdbcService {
12
12
  preWarm(ctx: Context): Promise<void>;
13
13
  /** Fetch the most recent observation for a buoy from the realtime2 text feed. */
14
14
  fetchObservation(stationId: string, ctx: Context): Promise<NdbcObservation>;
15
+ /** Fetch and parse the latest ADCP current profile for a station from the realtime2 `.adcp` feed. */
16
+ fetchCurrentProfile(stationId: string, ctx: Context): Promise<NdbcCurrentProfile>;
17
+ /**
18
+ * Parse an NDBC ADCP (`.adcp`) realtime file into the most recent current profile.
19
+ * Layout: two `#`-prefixed header lines (`#YY MM DD hh mm DEP01 DIR01 SPD01 …`,
20
+ * then a units line), followed by data rows most-recent-first. Each data row is
21
+ * `YY MM DD hh mm` then up to 20 depth-bin triples (depth m, direction degT, speed cm/s).
22
+ * Rows are variable-width — trailing bins are omitted rather than padded — and any
23
+ * component may be the literal `MM` (missing). A bin is emitted only when its depth
24
+ * is present; direction and speed become null when their token is `MM`.
25
+ */
26
+ parseAdcpText(text: string, stationId: string): NdbcCurrentProfile;
15
27
  /** Parse NDBC active stations XML into NdbcStation array. */
16
28
  private parseActiveStationsXml;
17
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ndbc-service.d.ts","sourceRoot":"","sources":["../../../src/services/ndbc/ndbc-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAY/D,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAA6B;IAEjD,qDAAqD;IAC/C,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAiC7D,qEAAqE;IAC/D,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,iFAAiF;IAC3E,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBjF,6DAA6D;IAC7D,OAAO,CAAC,sBAAsB;IA8C9B;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe;CA+GpE;AAMD,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}
1
+ {"version":3,"file":"ndbc-service.d.ts","sourceRoot":"","sources":["../../../src/services/ndbc/ndbc-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,KAAK,EAAkB,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAcnG,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAA6B;IAEjD,qDAAqD;IAC/C,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAiC7D,qEAAqE;IAC/D,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,iFAAiF;IAC3E,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBjF,qGAAqG;IAC/F,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyBvF;;;;;;;;OAQG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB;IAkElE,6DAA6D;IAC7D,OAAO,CAAC,sBAAsB;IA8C9B;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe;CA+GpE;AAMD,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}
@@ -6,6 +6,7 @@ import { notFound, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
6
6
  import { fetchWithTimeout, withRetry } from '@cyanheads/mcp-ts-core/utils';
7
7
  const ACTIVE_STATIONS_URL = 'https://www.ndbc.noaa.gov/activestations.xml';
8
8
  const REALTIME_URL = (id) => `https://www.ndbc.noaa.gov/data/realtime2/${id.toUpperCase()}.txt`;
9
+ const ADCP_URL = (id) => `https://www.ndbc.noaa.gov/data/realtime2/${id.toUpperCase()}.adcp`;
9
10
  const CACHE_TTL_MS = 6 * 60 * 60 * 1000; // 6 hours
10
11
  export class NdbcService {
11
12
  stationCache = null;
@@ -56,6 +57,89 @@ export class NdbcService {
56
57
  signal: ctx.signal,
57
58
  });
58
59
  }
60
+ /** Fetch and parse the latest ADCP current profile for a station from the realtime2 `.adcp` feed. */
61
+ async fetchCurrentProfile(stationId, ctx) {
62
+ return await withRetry(async () => {
63
+ const url = ADCP_URL(stationId);
64
+ const response = await fetchWithTimeout(url, 10_000, ctx, {
65
+ signal: ctx.signal,
66
+ });
67
+ const text = await response.text();
68
+ if (/^\s*<(!DOCTYPE\s+html|html[\s>])/i.test(text)) {
69
+ throw serviceUnavailable('NDBC ADCP endpoint returned HTML — likely rate-limited.');
70
+ }
71
+ return this.parseAdcpText(text, stationId);
72
+ }, {
73
+ operation: `NdbcService.fetchCurrentProfile(${stationId})`,
74
+ context: ctx,
75
+ baseDelayMs: 1000,
76
+ maxRetries: 2,
77
+ signal: ctx.signal,
78
+ });
79
+ }
80
+ /**
81
+ * Parse an NDBC ADCP (`.adcp`) realtime file into the most recent current profile.
82
+ * Layout: two `#`-prefixed header lines (`#YY MM DD hh mm DEP01 DIR01 SPD01 …`,
83
+ * then a units line), followed by data rows most-recent-first. Each data row is
84
+ * `YY MM DD hh mm` then up to 20 depth-bin triples (depth m, direction degT, speed cm/s).
85
+ * Rows are variable-width — trailing bins are omitted rather than padded — and any
86
+ * component may be the literal `MM` (missing). A bin is emitted only when its depth
87
+ * is present; direction and speed become null when their token is `MM`.
88
+ */
89
+ parseAdcpText(text, stationId) {
90
+ const lines = text
91
+ .split('\n')
92
+ .map((l) => l.trim())
93
+ .filter(Boolean);
94
+ if (!lines.some((l) => l.startsWith('#'))) {
95
+ throw serviceUnavailable(`NDBC ADCP file for ${stationId} has no header row.`);
96
+ }
97
+ // Rows are reverse-chronological, so the first non-header line is the latest observation.
98
+ const dataLine = lines.find((l) => !l.startsWith('#'));
99
+ if (!dataLine) {
100
+ throw notFound(`NDBC station ${stationId} has no current-profile data rows — station may be offline.`, {
101
+ stationId,
102
+ reason: 'no_current_data',
103
+ });
104
+ }
105
+ const tokens = dataLine.split(/\s+/);
106
+ const bins = [];
107
+ // Direction/speed are null when NDBC wrote the literal `MM` for that component.
108
+ const parseComponent = (tok) => {
109
+ if (tok === undefined || tok === 'MM')
110
+ return null;
111
+ const n = Number.parseFloat(tok);
112
+ return Number.isNaN(n) ? null : n;
113
+ };
114
+ // Skip the 5 leading time columns (YY MM DD hh mm); the rest are depth/dir/speed triples.
115
+ for (let i = 5; i + 3 <= tokens.length; i += 3) {
116
+ const depthTok = tokens[i];
117
+ if (depthTok === undefined || depthTok === 'MM')
118
+ continue;
119
+ const depthM = Number.parseFloat(depthTok);
120
+ if (Number.isNaN(depthM))
121
+ continue;
122
+ bins.push({
123
+ depthM,
124
+ directionDeg: parseComponent(tokens[i + 1]),
125
+ speedCmS: parseComponent(tokens[i + 2]),
126
+ });
127
+ }
128
+ if (bins.length === 0) {
129
+ throw notFound(`NDBC station ${stationId} reported no usable current bins — profiler offline or all bins missing.`, { stationId, reason: 'no_current_data' });
130
+ }
131
+ // Build the ISO timestamp from the YY MM DD hh mm columns. NDBC emits 4-digit years in
132
+ // the YY column, so treat values ≥ 1000 as already-full years (mirrors parseRealtimeText).
133
+ const [yy, mo, dd, hh, mn] = tokens;
134
+ const observedAt = yy && mo && dd && hh && mn
135
+ ? (() => {
136
+ const n = Number.parseInt(yy, 10);
137
+ const year = n >= 1000 ? n : n < 50 ? 2000 + n : 1900 + n;
138
+ return `${year}-${mo.padStart(2, '0')}-${dd.padStart(2, '0')}T${hh.padStart(2, '0')}:${mn.padStart(2, '0')}:00Z`;
139
+ })()
140
+ : new Date().toISOString();
141
+ return { observedAt, bins };
142
+ }
59
143
  /** Parse NDBC active stations XML into NdbcStation array. */
60
144
  parseActiveStationsXml(xml) {
61
145
  const stations = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ndbc-service.js","sourceRoot":"","sources":["../../../src/services/ndbc/ndbc-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ndbc-service.js","sourceRoot":"","sources":["../../../src/services/ndbc/ndbc-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAuB,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGhG,MAAM,mBAAmB,GAAG,8CAA8C,CAAC;AAC3E,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,EAAE,CAClC,4CAA4C,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;AACrE,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAE,CAC9B,4CAA4C,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;AACtE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;AAOnD,MAAM,OAAO,WAAW;IACd,YAAY,GAAwB,IAAI,CAAC;IAEjD,qDAAqD;IACrD,KAAK,CAAC,iBAAiB,CAAC,GAAY;QAClC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YACjF,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QACpC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAC9B,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,mBAAmB,EACnB,MAAM,EACN,GAAgC,EAChC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACvB,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,kBAAkB,CAAC,2DAA2D,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,EACD;YACE,SAAS,EAAE,+BAA+B;YAC1C,OAAO,EAAE,GAAgC;YACzC,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CACF,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,OAAO,CAAC,GAAY;QACxB,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,GAAY;QACpD,OAAO,MAAM,SAAS,CACpB,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAgC,EAAE;gBACrF,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,kBAAkB,CAAC,6DAA6D,CAAC,CAAC;YAC1F,CAAC;YAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC,EACD;YACE,SAAS,EAAE,gCAAgC,SAAS,GAAG;YACvD,OAAO,EAAE,GAAgC;YACzC,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CACF,CAAC;IACJ,CAAC;IAED,qGAAqG;IACrG,KAAK,CAAC,mBAAmB,CAAC,SAAiB,EAAE,GAAY;QACvD,OAAO,MAAM,SAAS,CACpB,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAgC,EAAE;gBACrF,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,MAAM,kBAAkB,CAAC,yDAAyD,CAAC,CAAC;YACtF,CAAC;YAED,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC,EACD;YACE,SAAS,EAAE,mCAAmC,SAAS,GAAG;YAC1D,OAAO,EAAE,GAAgC;YACzC,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,aAAa,CAAC,IAAY,EAAE,SAAiB;QAC3C,MAAM,KAAK,GAAG,IAAI;aACf,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,kBAAkB,CAAC,sBAAsB,SAAS,qBAAqB,CAAC,CAAC;QACjF,CAAC;QAED,0FAA0F;QAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,QAAQ,CACZ,gBAAgB,SAAS,6DAA6D,EACtF;gBACE,SAAS;gBACT,MAAM,EAAE,iBAAiB;aAC1B,CACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,GAAqB,EAAE,CAAC;QAClC,gFAAgF;QAChF,MAAM,cAAc,GAAG,CAAC,GAAuB,EAAiB,EAAE;YAChE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACnD,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,0FAA0F;QAC1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI;gBAAE,SAAS;YAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,SAAS;YAEnC,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM;gBACN,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3C,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,CACZ,gBAAgB,SAAS,0EAA0E,EACnG,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,CACzC,CAAC;QACJ,CAAC;QAED,uFAAuF;QACvF,2FAA2F;QAC3F,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC;QACpC,MAAM,UAAU,GACd,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YACxB,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC1D,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;YACnH,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE/B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,6DAA6D;IACrD,sBAAsB,CAAC,GAAW;QACxC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,mCAAmC;QACnC,MAAM,YAAY,GAAG,8BAA8B,CAAC;QAEpD,KACE,IAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EACxC,WAAW,KAAK,IAAI,EACpB,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EACpC,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAsB,EAAE;gBAC/C,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3D,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9B,CAAC,CAAC;YAEF,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAEzB,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;gBAAE,SAAS;YAE5D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,SAAS;YAE3D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE;gBACpB,0EAA0E;gBAC1E,gFAAgF;gBAChF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE;gBAChD,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,MAAM;gBACX,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACvD,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;gBAC1D,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG;gBAChD,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG;aAChE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAY,EAAE,SAAiB;QAC/C,MAAM,KAAK,GAAG,IAAI;aACf,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,uBAAuB;QACvB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,kBAAkB,CAAC,iBAAiB,SAAS,qBAAqB,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,OAAO,GAAG,UAAU;aACvB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAE/B,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,QAAQ,CAAC,aAAa,SAAS,0CAA0C,EAAE;gBAC/E,SAAS;gBACT,MAAM,EAAE,gBAAgB;aACzB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAiB,EAAE;YACzC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACjD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,GAAW,EAAiB,EAAE;YAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,mDAAmD;QACnD,4EAA4E;QAC5E,qEAAqE;QACrE,8EAA8E;QAC9E,MAAM,SAAS,GAAG,GAAkB,EAAE;YACpC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACjD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;QAEF,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;QAEvB,0FAA0F;QAC1F,uFAAuF;QACvF,MAAM,IAAI,GAAG,EAAE;YACb,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACtD,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,UAAU,GACd,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YACxB,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM;YAC3G,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE/B,oCAAoC;QACpC,MAAM,UAAU,GAAG;YACjB,MAAM;YACN,MAAM;YACN,KAAK;YACL,MAAM;YACN,KAAK;YACL,KAAK;YACL,KAAK;YACL,MAAM;YACN,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAC;QACF,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAChE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,CACZ,aAAa,SAAS,kEAAkE,EACxF,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,CACxC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,UAAU;YACV,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC/B,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC;YACzB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC;YAC/B,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC;YAC9B,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC;YAClC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACzB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;SACtB,CAAC;IACJ,CAAC;CACF;AAED,gCAAgC;AAEhC,IAAI,QAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -17,6 +17,29 @@ export interface NdbcStation {
17
17
  /** NDBC station type (buoy, fixed, etc.) */
18
18
  type?: string;
19
19
  }
20
+ /**
21
+ * A single depth bin from an NDBC ADCP (`.adcp`) current profile.
22
+ * Direction and speed are null when NDBC reported the literal `MM` for that
23
+ * component; a bin is only emitted when its depth is present to anchor it.
24
+ */
25
+ export interface NdbcCurrentBin {
26
+ /** Bin depth below the surface in meters. */
27
+ depthM: number;
28
+ /** Direction the current flows toward, degrees true (0–360) — null if MM. */
29
+ directionDeg: number | null;
30
+ /** Current speed in cm/s — null if MM. */
31
+ speedCmS: number | null;
32
+ }
33
+ /**
34
+ * Parsed NDBC ADCP current profile — the most recent observation row from an
35
+ * `<ID>.adcp` realtime file, resolved into an ordered list of depth bins.
36
+ */
37
+ export interface NdbcCurrentProfile {
38
+ /** Depth-binned current measurements, shallowest first (NDBC source order). */
39
+ bins: NdbcCurrentBin[];
40
+ /** ISO 8601 UTC timestamp of the observation row. */
41
+ observedAt: string;
42
+ }
20
43
  /**
21
44
  * Parsed NDBC realtime observation.
22
45
  * All sensor fields are null when the buoy did not report a value (MM in source).
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/ndbc/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,2CAA2C;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8DAA8D;IAC9D,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uDAAuD;IACvD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/ndbc/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,2CAA2C;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8DAA8D;IAC9D,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uDAAuD;IACvD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/noaa-marine-mcp-server",
3
- "version": "0.1.7",
3
+ "version": "0.2.0",
4
4
  "mcpName": "io.github.cyanheads/noaa-marine-mcp-server",
5
5
  "description": "Find NOAA tide stations and NDBC buoys, fetch tide predictions, water levels, tidal currents, and live buoy conditions via MCP. STDIO or Streamable HTTP.",
6
6
  "type": "module",
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/cyanheads/noaa-marine-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.1.7",
9
+ "version": "0.2.0",
10
10
  "remotes": [
11
11
  {
12
12
  "type": "streamable-http",
@@ -19,7 +19,7 @@
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/noaa-marine-mcp-server",
21
21
  "runtimeHint": "bun",
22
- "version": "0.1.7",
22
+ "version": "0.2.0",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -55,7 +55,7 @@
55
55
  "registryBaseUrl": "https://registry.npmjs.org",
56
56
  "identifier": "@cyanheads/noaa-marine-mcp-server",
57
57
  "runtimeHint": "bun",
58
- "version": "0.1.7",
58
+ "version": "0.2.0",
59
59
  "packageArguments": [
60
60
  {
61
61
  "type": "positional",