# `noaa_marine__noaa_marine_get_current_profile`

**Get Ocean Current Profile**

Observed ocean-current depth profile from an NDBC ADCP buoy — the most recent measurement of current speed and direction at each depth bin, returning depth in meters, direction in degrees true (the direction the current flows toward), and speed in cm/s. It is distinct from noaa_marine_get_currents, which returns CO-OPS tidal-current predictions of max flood, ebb and slack rather than these observed acoustic-Doppler measurements. A depth bin is reported whenever NDBC gives it a depth, and its direction or speed is null when the sensor did not report that component. Use noaa_marine_find_stations with source="ndbc" and types=\["current_profile"\] to find station IDs, since most NDBC stations serve no ADCP profile and an unfiltered search returns IDs this tool cannot read.

- Server: [NOAA Tides & Currents](https://gateway.mcpharbor.dev/docs/servers/noaa_marine) (`dev.mcpharbor.gateway/noaa_marine`)
- Price per call: $0.0001 (100 micro-USD); only tools/call is charged
- Endpoint: `https://gateway.mcpharbor.dev/mcp` or `https://gateway.mcpharbor.dev/mcp/noaa_marine`
- Upstream tool: exposed by the provider; called through this gateway as `noaa_marine__noaa_marine_get_current_profile`
- Provider terms: <https://tidesandcurrents.noaa.gov/disclaimers.html> (verified 2026-09-19)
- Upstream API documentation: <https://api.tidesandcurrents.noaa.gov/api/prod/>
- Rate limit: 300 requests per minute
- Attribution required: NOS requests attribution whenever its material is reproduced and re-disseminated; content must not be modified and presented as official government material; predictions are forecast guidance, not for navigation reliance. The optional 'application' parameter should identify the gateway.

## Parameters

- `station_id` (string, required): NDBC station ID (5-character alphanumeric, e.g. "44033"). Obtain from noaa_marine_find_stations with source="ndbc" and types=\["current_profile"\].

## Example call

Request headers and body:

```http
POST /mcp HTTP/1.1
Host: gateway.mcpharbor.dev
Authorization: Bearer <your gateway API key>
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: noaa_marine__noaa_marine_get_current_profile
```

```json
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "_meta": {
      "io.modelcontextprotocol/clientCapabilities": {},
      "io.modelcontextprotocol/clientInfo": {
        "name": "example-agent",
        "version": "1.0.0"
      },
      "io.modelcontextprotocol/protocolVersion": "2026-07-28"
    },
    "arguments": {
      "station_id": "example"
    },
    "name": "noaa_marine__noaa_marine_get_current_profile"
  }
}
```

A successful response:

```json
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "_meta": {
      "dev.mcpharbor.gateway/call": {
        "chargedMicroUsd": 100,
        "id": "<the id of this charge>"
      }
    },
    "content": [
      {
        "text": "<whatever the upstream tool returned>",
        "type": "text"
      }
    ],
    "resultType": "complete"
  }
}
```

This call costs $0.0001 (100 micro-USD). Reading this page and listing the tool cost nothing.
The `dev.mcpharbor.gateway/call` record in the result is the receipt for that charge. Each
POST is metered separately, so sending the same call again buys another one: see
[agent.txt](https://gateway.mcpharbor.dev/agent.txt), section 7, before retrying.

## Attribution

This provider requires the attribution below wherever you use results from its tools.
Reproduce it verbatim:

> NOS requests attribution whenever its material is reproduced and re-disseminated; content must not be modified and presented as official government material; predictions are forecast guidance, not ...

## Tool definition

Exactly as `tools/list` returns it (free):

```json
{
  "_meta": {
    "dev.mcpharbor.gateway/pricing": {
      "currency": "USD",
      "pricePerCallMicroUsd": 100
    }
  },
  "annotations": {
    "openWorldHint": true,
    "readOnlyHint": true
  },
  "description": "Observed ocean-current depth profile from an NDBC ADCP buoy — the most recent measurement of current speed and direction at each depth bin, returning depth in meters, direction in degrees true (the direction the current flows toward), and speed in cm/s. It is distinct from noaa_marine_get_currents, which returns CO-OPS tidal-current predictions of max flood, ebb and slack rather than these observed acoustic-Doppler measurements. A depth bin is reported whenever NDBC gives it a depth, and its direction or speed is null when the sensor did not report that component. Use noaa_marine_find_stations with source=\"ndbc\" and types=[\"current_profile\"] to find station IDs, since most NDBC stations serve no ADCP profile and an unfiltered search returns IDs this tool cannot read.",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "properties": {
      "station_id": {
        "description": "NDBC station ID (5-character alphanumeric, e.g. \"44033\"). Obtain from noaa_marine_find_stations with source=\"ndbc\" and types=[\"current_profile\"].",
        "pattern": "^[A-Za-z0-9_-]{1,20}$",
        "type": "string"
      }
    },
    "required": [
      "station_id"
    ],
    "type": "object"
  },
  "name": "noaa_marine__noaa_marine_get_current_profile",
  "outputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "anyOf": [
      {
        "not": {
          "required": [
            "error"
          ]
        },
        "required": [
          "station_id",
          "station_name",
          "latitude",
          "longitude",
          "observed_at",
          "source",
          "bin_count",
          "bins"
        ]
      },
      {
        "required": [
          "error"
        ]
      }
    ],
    "properties": {
      "bin_count": {
        "description": "Number of depth bins in the profile.",
        "type": "number"
      },
      "bins": {
        "description": "Depth-binned current measurements, shallowest first (NDBC source order).",
        "items": {
          "additionalProperties": false,
          "description": "A single depth-bin current measurement.",
          "properties": {
            "depth_m": {
              "description": "Bin depth below the surface in meters.",
              "type": "number"
            },
            "direction_deg": {
              "description": "Direction the current flows toward, in degrees true (0–360). Null if not reported for this bin.",
              "type": [
                "number",
                "null"
              ]
            },
            "speed_cm_s": {
              "description": "Current speed in cm/s. Null if not reported for this bin.",
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "depth_m",
            "direction_deg",
            "speed_cm_s"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "error": {
        "additionalProperties": {},
        "description": "Present when the call failed. Absent on success.",
        "properties": {
          "code": {
            "description": "JSON-RPC error code for this failure.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "data": {
            "additionalProperties": {},
            "properties": {
              "reason": {
                "description": "Machine-readable failure mode. Declared by this tool: `profile_not_found`: NDBC returned 404 for the station — no ADCP current-profile file exists for it. `no_current_data`: The ADCP file exists but has no usable data rows — profiler offline or every bin missing. Other values are possible when a failure originates below the handler.",
                "examples": [
                  "profile_not_found",
                  "no_current_data"
                ],
                "type": "string"
              },
              "recovery": {
                "additionalProperties": {},
                "description": "Actionable next step for the caller.",
                "properties": {
                  "hint": {
                    "type": "string"
                  }
                },
                "required": [
                  "hint"
                ],
                "type": "object"
              },
              "retryable": {
                "description": "Whether retrying may succeed.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "message": {
            "description": "Human-readable description of what went wrong.",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "latitude": {
        "description": "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.",
        "type": [
          "number",
          "null"
        ]
      },
      "longitude": {
        "description": "Station longitude in decimal degrees. Null when the station is absent from the NDBC active-stations list.",
        "type": [
          "number",
          "null"
        ]
      },
      "observed_at": {
        "description": "ISO 8601 UTC timestamp of the observation. Always a valid instant — a row whose upstream time columns are malformed is rejected rather than timestamped with the current time.",
        "type": "string"
      },
      "source": {
        "description": "Data source — always \"ndbc\" for this tool.",
        "type": "string"
      },
      "station_id": {
        "description": "Station ID echoed from the request — for chaining.",
        "type": "string"
      },
      "station_name": {
        "description": "Station name from the NDBC active stations list.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "title": "Get Ocean Current Profile"
}
```
