Skip to main content
Glama
RyanCardin15

noaa-tidesandcurrents-mcp

by RyanCardin15

🌊 NOAA Tides & Currents MCP Server

npm version License: MIT TypeScript MCP

A Model Context Protocol server for NOAA CO-OPS Tides and Currents data

Built by Cardin Labs · Hosted at Perigee

Water levels · tide predictions · currents · marine weather · station metadata · tidal datums · harmonic constituents · sea level trends & projections · high tide flooding · sun & moon calculations


Quick Start

# Run immediately with npx
npx @ryancardin/noaa-tides-currents-mcp-server

# Or the short alias
npx noaa-mcp

Claude Desktop / Claude Code configuration

{
  "mcpServers": {
    "noaa": {
      "command": "npx",
      "args": ["-y", "@ryancardin/noaa-tides-currents-mcp-server"]
    }
  }
}

Claude Code one-liner:

claude mcp add noaa -- npx -y @ryancardin/noaa-tides-currents-mcp-server

HTTP mode (optional)

npx noaa-mcp --http --port 3000   # stateless streamable HTTP at http://localhost:3000/mcp

No API key is required — NOAA's CO-OPS APIs are open.


Related MCP server: mcp-noaa-tides

Tools (25)

Observations & Predictions (Data API)

Tool

What it does

noaa_get_water_levels

Observed water levels: 1-minute, 6-minute, or hourly series, preliminary/verified quality flags decoded

noaa_get_water_level_summaries

high_low (HH/H/L/LL daily extremes), daily_mean (Great Lakes), daily_max_min, monthly_mean datum tables

noaa_get_tide_predictions

Harmonic tide predictions — hilo high/low events (up to 10 years) or interval series

noaa_get_currents

Observed current speed/direction by depth bin (ADCP), optional beam diagnostics

noaa_get_current_predictions

Predicted currents — max_slack flood/ebb/slack events or interval series

noaa_get_meteorological_data

Wind, air/water temperature, pressure, air gap (bridge clearance), conductivity, visibility, humidity, salinity

Station Discovery & Metadata (Metadata API)

Tool

What it does

noaa_search_stations

Search the station directory by capability type, name substring, state — paginated

noaa_find_nearest_stations

Nearest stations to any lat/lon (great-circle, cached directory), filterable by type

noaa_get_station_info

Full station record with expandable sensors, flood levels, benchmarks, bins, deployments...

noaa_get_station_datums

Tidal datum elevations (MLLW, MSL, MHHW, NAVD88...), HAT/LAT, historic extremes, current or superseded epoch

noaa_get_harmonic_constituents

The M2/S2/K1/... constituents behind a station's predictions (water level or current ellipse form)

noaa_get_prediction_offsets

Subordinate-station time/height offsets from their reference stations (tide or current)

Climate & Derived Products (DPAPI)

Tool

What it does

noaa_get_sea_level_trends

Long-term relative sea level trend with error bars and observation period

noaa_get_sea_level_rise_projections

2022 Interagency SLR scenario projections per decade through 2150

noaa_get_extreme_water_levels

Annual exceedance probability levels (e.g. the "100-year" water level)

noaa_get_top_ten_water_levels

Highest water levels ever recorded, with causal events (hurricanes, nor'easters)

noaa_get_high_tide_flooding

HTF flood-day counts (daily/monthly/seasonal/annual), outlooks, decadal projections, likelihoods

Astronomy (computed locally)

Tool

What it does

astro_get_moon_phase

Phase, illumination, age, distance for a date or range (spring/neap tide context)

astro_get_next_moon_phase

Next new/full/quarter moon date(s)

astro_get_sun_times

Sunrise/sunset, twilights, golden hour, day length for any location/date

astro_get_sun_position

Azimuth/altitude (+ approximate declination/RA)

astro_get_next_sun_event

Next occurrence(s) of any sun event

Wind & Marine Forecasts (NWS Weather API)

Tool

What it does

nws_get_wind_forecast

Hourly numeric wind forecast (speed/gust/direction, wave height where gridded) for any US lat/lon, up to ~7 days

nws_get_marine_forecast

Official Coastal Waters Forecast narrative for the marine zone covering a lat/lon, incl. Small Craft Advisories

Reference

Tool

What it does

noaa_get_reference_guide

Curated NOAA reference: products, datums, units, time zones, intervals, station types, data limits, quality flags, date formats, marine forecasts

Every tool supports response_format: "markdown" (readable tables with units spelled out — the default) or "json" (complete structured payload), and attaches structured content for MCP clients that consume it.

Resources

  • noaa://guide/getting-started — workflow recipes and common pitfalls

  • noaa://reference/{topic} — the ten reference topics above as pinnable resources

Prompts

  • tide_report — tide report for a place/station and date

  • boating_conditions — pre-departure briefing: tides, currents, wind, daylight

  • station_flood_risk — flood risk profile: HTF history, extremes, trends, projections

  • station_overview — everything a station offers


The Nuances (handled for you)

These are the things that make NOAA's API tricky — this server encodes them:

  • Datums matter. Heights are meaningless without a vertical reference. MLLW (chart datum) is the default; stations differ in which datums they support (Great Lakes use IGLD/LWD and have no tide predictions). noaa_get_station_datums gives the conversion table.

  • Units are asymmetric. metric means m/s for wind but cm/s for currents; air pressure is millibars and salinity PSU in both systems. Every response labels its units.

  • Per-product request-span limits (4 days for 1-minute data, 31 days for 6-minute, 1 year hourly, 10 years for hilo predictions...) are validated client-side with actionable messages before hitting NOAA.

  • Two station ID schemes. Water-level/met stations are 7-digit numeric (9414290); current stations are alphanumeric (cb0102).

  • Reference vs subordinate stations. Subordinate (S) prediction stations only support hilo predictions, derived by offsets from a reference (R) station.

  • daily_mean requires local standard time and only exists for Great Lakes stations — enforced automatically.

  • Quality flags decoded. Preliminary vs verified data, sigma, flag alphabets (which differ between preliminary and verified!), and HH/H/L/LL tide types are explained inline.

  • Predictions are astronomical — storm surge is not included; compare with observed water levels.

  • Station directory is cached (6 h) so nearest-station searches don't refetch thousands of records.


Usage Examples

"When is high tide in Boston tomorrow?"

  1. noaa_find_nearest_stations (type tidepredictions) → 8443970 BOSTON

  2. noaa_get_tide_predictions (interval hilo) → high/low times & heights above MLLW

"How strong will the current be in the Cape Cod Canal this afternoon?"

  1. noaa_find_nearest_stations (type currentpredictions)

  2. noaa_get_current_predictions (interval max_slack) → max flood/ebb (knots) and slack times

"How often does Providence flood now vs 20 years ago, and what's projected for 2050?"

  1. noaa_get_high_tide_flooding (report annual, range 25)

  2. noaa_get_high_tide_flooding (report projections, decade 2050)

  3. noaa_get_sea_level_trends + noaa_get_sea_level_rise_projections


Development

npm install
npm run build        # tsc → dist/
npm test             # vitest unit tests (validation, formatting, astronomy)
npm run test:live    # end-to-end smoke test against the live NOAA API
npm run inspector    # MCP Inspector against dist/index.js
npm run dev          # tsx src/index.ts

Architecture

src/
├── index.ts            # entry point: stdio (default) or --http streamable HTTP
├── constants.ts        # API base URLs, timeouts, cache TTLs, response limits
├── client/             # shared HTTP layer (retry/backoff, error mapping) + TTL cache
├── validation/         # date normalization + per-product span limit enforcement
├── format/             # unit labeling, flag legends, markdown/json response shaping
├── schemas/            # shared Zod field schemas with nuance-carrying descriptions
├── services/           # Data API, Metadata API, DPAPI, moon & sun services
├── tools/              # 25 tool registrations grouped by domain
├── resources/          # noaa:// reference resources
├── prompts/            # workflow prompt templates
└── reference/          # curated NOAA reference content

Data sources:

  • Data APIapi.tidesandcurrents.noaa.gov/api/prod/datagetter

  • Metadata APIapi.tidesandcurrents.noaa.gov/mdapi/prod/webapi

  • Derived Product APIapi.tidesandcurrents.noaa.gov/dpapi/prod/webapi

  • Astronomysuncalc, computed locally

License

MIT © Cardin LLC (Cardin Labs)

NOAA data is provided by the NOAA Center for Operational Oceanographic Products and Services (CO-OPS). This project is not affiliated with or endorsed by NOAA.

Available Tools

24 tools
get_current_predictionsCInspect

Get current predictions

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD or MM/DD/YYYY)
binNoBin number
dateNoDate to retrieve data for ("today", "latest", "recent", or specific date)
end_dateNoEnd date (YYYYMMDD or MM/DD/YYYY)
formatNoOutput format (json, xml, csv)
intervalNoInterval (MAX_SLACK or a number for minutes)
rangeNoNumber of hours to retrieve data for
stationYesStation ID
time_zoneNoTime zone (gmt, lst, lst_ldt)
unitsNoUnits to use ("english" or "metric")
vel_typeNoVelocity type (speed_dir or default)

TDQS

C2/5.0
Behavior1/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the action ('Get') without any details on permissions, rate limits, response format, pagination, or error handling. For a tool with 11 parameters and no output schema, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just three words, which is efficient and front-loaded. However, it's arguably under-specified rather than optimally concise, as it lacks necessary detail for such a complex tool, but it doesn't waste words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (11 parameters, no output schema, no annotations) and rich sibling context, the description is incomplete. It doesn't explain what 'predictions' entail, the return values, or behavioral aspects. The high parameter coverage in the schema helps, but the description fails to provide essential context for effective tool use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all parameters well-documented in the input schema (e.g., descriptions for 'date', 'format', 'units'). The description adds no additional parameter information beyond what's in the schema, so it meets the baseline of 3 for high coverage without extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get current predictions' is essentially a tautology of the tool name 'get_current_predictions'. It doesn't specify what type of predictions (e.g., tide, water level, weather) or for what resource, making it vague. While it distinguishes from some siblings like 'get_stations', it doesn't clarify how it differs from similar tools like 'get_tide_predictions' or 'get_water_levels'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools (e.g., 'get_tide_predictions', 'get_water_levels', 'get_currents'), there's no indication of context, prerequisites, or exclusions. This leaves the agent guessing about the appropriate use case.

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

get_currentsCInspect

Get currents data for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD or MM/DD/YYYY)
binNoBin number
dateNoDate to retrieve data for ("today", "latest", "recent", or specific date)
end_dateNoEnd date (YYYYMMDD or MM/DD/YYYY)
formatNoOutput format (json, xml, csv)
rangeNoNumber of hours to retrieve data for
stationYesStation ID
time_zoneNoTime zone (gmt, lst, lst_ldt)
unitsNoUnits to use ("english" or "metric")

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get currents data' implies a read-only operation, but the description doesn't mention authentication requirements, rate limits, data freshness, pagination, or error conditions. For a data retrieval tool with 9 parameters, this leaves significant behavioral aspects unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a tool with comprehensive schema documentation and gets straight to the point without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (9 parameters, no output schema, no annotations), the description is inadequate. It doesn't explain what 'currents data' includes, the data format returned, or how it relates to sibling tools. For a specialized data retrieval tool in a domain with many similar tools, more context is needed to understand its specific role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly with descriptions, enums, and constraints. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get currents data for a station' clearly states the action (get) and resource (currents data for a station), but it's vague about what 'currents data' entails (e.g., ocean currents, river currents, electrical currents). It doesn't distinguish this tool from siblings like 'get_water_levels' or 'get_tide_predictions', which might provide related hydrological data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools for water levels, tides, and meteorological data, there's no indication of when 'currents data' is specifically needed or what distinguishes it from other data retrieval tools in this domain.

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

get_extreme_water_levelsCInspect

Get extreme water levels and exceedance probabilities for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format (json, xml, csv)
stationYesStation ID
unitsNoUnits to use ("english" or "metric")

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Get extreme water levels and exceedance probabilities,' which implies a read-only operation, but does not cover aspects like rate limits, authentication needs, data freshness, or error handling. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action, but could be slightly improved by adding brief context to enhance clarity without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits, usage context, and output expectations. With no output schema, it should ideally hint at return values, but it does not, leaving some gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for all parameters (station, format, units) including enums. The description does not add any meaning beyond what the schema provides, such as explaining what 'extreme water levels' entail or how 'exceedance probabilities' are calculated. Given the high schema coverage, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('extreme water levels and exceedance probabilities for a station'), making the purpose understandable. However, it does not explicitly differentiate this tool from sibling tools like 'get_top_ten_water_levels' or 'get_water_levels', which might also involve water level data, so it lacks sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools related to water levels, tides, and flooding, there is no indication of specific contexts, prerequisites, or exclusions for selecting this tool over others, leaving usage unclear.

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

get_high_tide_flooding_annualCInspect

Get high tide flooding annual count data for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD format)
datumNoDatum reference for DPAPI
end_dateNoEnd date (YYYYMMDD format)
formatNoOutput format (json, xml, csv)
stationYesStation ID
thresholdNoFlood threshold level
year_rangeNoYear range (YYYY-YYYY format)

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets' data, implying a read-only operation, but doesn't disclose other traits such as rate limits, authentication needs, data format defaults, or what happens with missing parameters. This leaves significant gaps for a tool with 7 parameters and no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with zero waste, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the return values, data structure, or behavioral context needed for effective use. While the schema covers parameters well, the lack of output details and behavioral transparency makes this inadequate for a data retrieval tool with multiple siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter semantics beyond what the input schema provides. With 100% schema description coverage, the schema already documents all 7 parameters thoroughly, including enums and formats. The description doesn't compensate by explaining interactions between parameters (e.g., how 'year_range' relates to 'begin_date'/'end_date'), so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool retrieves 'high tide flooding annual count data for a station', which is clear but vague about the specific verb and scope. It distinguishes from siblings like 'get_high_tide_flooding_daily' by specifying 'annual', but doesn't fully differentiate from other flooding tools like 'get_high_tide_flooding_projections' or 'get_high_tide_flooding_likelihoods' in terms of data type or use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives is provided. The description doesn't mention prerequisites, context for choosing annual data over daily/monthly/seasonal flooding data, or comparisons to other flooding-related tools in the sibling list. Usage is implied by the name but not elaborated.

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

get_high_tide_flooding_dailyCInspect

Get high tide flooding daily count data for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD format)
datumNoDatum reference for DPAPI
end_dateNoEnd date (YYYYMMDD format)
formatNoOutput format (json, xml, csv)
stationYesStation ID
thresholdNoFlood threshold level
yearNoYear for analysis (YYYY format)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states it 'gets' data (implying read-only), but doesn't disclose rate limits, authentication needs, data freshness, or what 'count data' entails (e.g., aggregated values). For a data retrieval tool with 7 parameters, this leaves significant gaps in understanding its operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without wasted words. It directly communicates the tool's function in a compact form, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'daily count data' returns (e.g., time series, totals), how parameters like 'datum' or 'threshold' affect results, or error conditions. Given the complexity and lack of structured metadata, more context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 7 parameters with descriptions and enums. The description adds no parameter-specific information beyond implying a 'station' is required. Baseline 3 is appropriate as the schema does the heavy lifting, though the description doesn't compensate with additional context like parameter interactions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get high tide flooding daily count data for a station', specifying the verb ('Get'), resource ('high tide flooding daily count data'), and target ('for a station'). It distinguishes from siblings like get_high_tide_flooding_annual by specifying 'daily' granularity, though it doesn't explicitly contrast with other flooding tools like monthly or seasonal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like get_high_tide_flooding_monthly or get_high_tide_flooding_annual, nor does it specify prerequisites or context for choosing daily data over other timeframes.

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

get_high_tide_flooding_likelihoodsBInspect

Get high tide flooding daily likelihoods for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoSpecific date (YYYYMMDD format)
datumNoDatum reference for DPAPI
formatNoOutput format (json, xml, csv)
stationYesStation ID
thresholdNoFlood threshold level

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read-only operation, the description doesn't address important aspects like authentication requirements, rate limits, error conditions, or what the output looks like (e.g., data format, structure). For a tool with 5 parameters and no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently communicates the core purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no output schema, no annotations), the description is minimally adequate but has clear gaps. It states what the tool does but doesn't provide behavioral context or usage guidance. With no output schema, the agent doesn't know what to expect in return, which is a significant limitation for effective tool use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all parameters well-documented in the input schema. The description doesn't add any meaningful parameter semantics beyond what's already in the schema (e.g., it doesn't explain relationships between parameters or provide usage examples). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'high tide flooding daily likelihoods for a station', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_high_tide_flooding_daily' or 'get_high_tide_flooding_annual', which appear to be related alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools like 'get_high_tide_flooding_daily' and 'get_high_tide_flooding_annual' that seem related, there's no indication of what distinguishes this tool's functionality from those, leaving the agent without context for selection.

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

get_high_tide_flooding_monthlyBInspect

Get high tide flooding monthly count data for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD format)
datumNoDatum reference for DPAPI
end_dateNoEnd date (YYYYMMDD format)
formatNoOutput format (json, xml, csv)
stationYesStation ID
thresholdNoFlood threshold level
yearNoYear for analysis (YYYY format)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data but does not describe any behavioral traits such as rate limits, authentication requirements, error handling, or the structure of the returned data. For a data retrieval tool with no annotation coverage, this is a significant gap, warranting a score of 2.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to understand at a glance. This minimalistic approach earns a score of 5 for conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no output schema, and no annotations), the description is minimally adequate. It states what the tool does but lacks details on behavioral aspects, output format, or usage context. While the schema covers parameters well, the absence of annotations and output schema means the description should provide more context, resulting in a score of 3.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add any parameter-specific information beyond what is already detailed in the input schema, which has 100% description coverage. It mentions 'for a station,' aligning with the required 'station' parameter, but provides no additional context on parameter usage, dependencies, or semantics. Given the high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get high tide flooding monthly count data for a station.' It specifies the verb ('Get'), resource ('high tide flooding monthly count data'), and target ('for a station'), making the action and scope unambiguous. However, it does not explicitly differentiate from sibling tools like 'get_high_tide_flooding_annual' or 'get_high_tide_flooding_daily,' which limits the score to 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for high tide flooding data (e.g., annual, daily, seasonal), there is no indication of the specific context or use cases for monthly data, nor any mention of prerequisites or exclusions. This lack of comparative guidance results in a score of 2.

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

get_high_tide_flooding_projectionsCInspect

Get high tide flooding decadal projections for sea level rise scenarios

ParametersJSON Schema
NameRequiredDescriptionDefault
datumNoDatum reference for DPAPI
decadeNoDecade for projections (e.g., "2050")
formatNoOutput format (json, xml, csv)
scenarioNoSea level rise scenario
stationYesStation ID
thresholdNoFlood threshold level

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool does without revealing any behavioral traits such as data format, rate limits, authentication needs, or potential side effects. For a tool with multiple parameters and no annotations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the tool's purpose without unnecessary words. It is front-loaded and to the point, making it easy to parse and understand quickly. Every part of the description earns its place by specifying key elements like 'decadal projections' and 'sea level rise scenarios.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (6 parameters, no annotations, no output schema), the description is insufficient. It lacks details on behavioral aspects, usage context, and output expectations. Without annotations or an output schema, the description should provide more context about what the tool returns and how to interpret results, but it does not, leaving significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with detailed descriptions and enums for parameters like 'datum,' 'decade,' 'format,' 'scenario,' 'station,' and 'threshold.' The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3, as the schema adequately documents the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get high tide flooding decadal projections for sea level rise scenarios.' It specifies the verb ('Get'), resource ('high tide flooding decadal projections'), and context ('sea level rise scenarios'), making it easy to understand. However, it does not explicitly differentiate from sibling tools like 'get_high_tide_flooding_annual' or 'get_high_tide_flooding_monthly,' which reduces clarity in distinguishing between similar tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools, specify scenarios where this tool is preferred, or outline any prerequisites or exclusions. This lack of context makes it challenging for an AI agent to select this tool appropriately among the many related flooding and prediction tools available.

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

get_high_tide_flooding_seasonalCInspect

Get high tide flooding seasonal count data for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD format)
datumNoDatum reference for DPAPI
end_dateNoEnd date (YYYYMMDD format)
formatNoOutput format (json, xml, csv)
season_monthsNoSeason months (DJF-Winter, MAM-Spring, JJA-Summer, SON-Fall)
stationYesStation ID
thresholdNoFlood threshold level
yearNoYear for analysis (YYYY format)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what the tool does ('Get... data') without detailing aspects like whether it's a read-only operation, potential rate limits, authentication needs, error handling, or data freshness. For a tool with 8 parameters and no annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence: 'Get high tide flooding seasonal count data for a station.' It is front-loaded with the core purpose, has zero wasted words, and is appropriately sized for the tool's complexity. Every part of the sentence earns its place by specifying the action, data type, and target.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, no output schema, no annotations), the description is incomplete. It lacks information on return values (e.g., data structure, units), usage context relative to siblings, and behavioral traits like error conditions or performance. For a data retrieval tool with multiple parameters and no structured output documentation, the description should provide more guidance to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with detailed descriptions for all 8 parameters, including enums and formats. The description adds no additional parameter semantics beyond the schema, such as explaining interactions between parameters (e.g., how 'season_months' relates to 'begin_date' and 'end_date'). Given the high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get high tide flooding seasonal count data for a station.' It specifies the verb ('Get'), resource ('high tide flooding seasonal count data'), and scope ('for a station'), which is specific and actionable. However, it doesn't explicitly differentiate from its siblings like 'get_high_tide_flooding_annual' or 'get_high_tide_flooding_monthly' beyond the 'seasonal' qualifier, which is why it doesn't reach a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for high tide flooding data (e.g., annual, daily, monthly, seasonal), it fails to specify scenarios where seasonal data is preferred, prerequisites, or exclusions. This leaves the agent without context for tool selection among similar options.

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

get_meteorological_dataCInspect

Get meteorological data

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD or MM/DD/YYYY)
dateNoDate to retrieve data for ("today", "latest", "recent", or specific date)
end_dateNoEnd date (YYYYMMDD or MM/DD/YYYY)
formatNoOutput format (json, xml, csv)
productYesProduct (air_temperature, wind, etc.)
rangeNoNumber of hours to retrieve data for
stationYesStation ID
time_zoneNoTime zone (gmt, lst, lst_ldt)
unitsNoUnits to use ("english" or "metric")

TDQS

C2/5.0
Behavior1/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. 'Get meteorological data' reveals nothing about authentication requirements, rate limits, data freshness/latency, error conditions, pagination, or what the response structure looks like. For a tool with 9 parameters and no output schema, this leaves the agent completely in the dark about how the tool actually behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally concise at just three words. While this represents severe under-specification rather than ideal conciseness, from a pure structural perspective, there's zero wasted language. Every word ('Get', 'meteorological', 'data') contributes to the minimal meaning provided.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters, 2 required parameters, no annotations, and no output schema, the description is completely inadequate. The agent needs to understand what meteorological data means in this specific API context, how it differs from sibling tools, what the response contains, and any behavioral constraints. The three-word description provides none of this essential context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage with detailed parameter documentation, so the baseline is 3. The description adds no additional parameter information beyond what's already in the schema. It doesn't explain relationships between parameters (like how 'date' interacts with 'begin_date' and 'end_date'), provide examples, or clarify ambiguous aspects like what 'recent' means for the date parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get meteorological data' is a tautology that essentially restates the tool name. While it includes a verb ('Get') and resource ('meteorological data'), it lacks specificity about what meteorological data means in this context and doesn't distinguish this tool from its many siblings (like get_current_predictions, get_water_levels, etc.). It doesn't clarify if this is for historical data, forecasts, or current conditions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides absolutely no guidance on when to use this tool versus alternatives. With 22 sibling tools available (many related to water levels, tides, sun/moon events, and station data), the agent has no indication whether this tool is for weather data specifically, what timeframes it covers, or how it differs from other meteorological-related tools that might exist in the sibling list.

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

get_moon_phaseBInspect

Get moon phase information for a specific date

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate to get moon phase for (YYYY-MM-DD format). Defaults to current date.
formatNoOutput format (json or text)
latitudeNoLatitude for location-specific calculations
longitudeNoLongitude for location-specific calculations

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states what the tool does but doesn't disclose behavioral traits like whether it's read-only (implied by 'Get'), error handling, rate limits, authentication needs, or what happens with invalid inputs. For a tool with no annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose. It's front-loaded with the core functionality and has zero wasted words, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 4 parameters with full schema coverage, the description is minimally adequate. It covers the basic purpose but lacks behavioral context, usage guidance, and output details. For a tool with moderate complexity (location-based calculations), it should do more to compensate for missing structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description doesn't add any parameter-specific details beyond what's in the schema (e.g., it doesn't explain how latitude/longitude affect calculations or when to use json vs. text format). With high schema coverage, the baseline is 3 even without extra param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('moon phase information') with a specific scope ('for a specific date'). It distinguishes from siblings like 'get_moon_phases_range' (which covers date ranges) and 'get_next_moon_phase' (which focuses on future events). However, it doesn't explicitly mention how it differs from all siblings, so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'get_moon_phases_range' for multiple dates or 'get_next_moon_phase' for upcoming phases. There's no context about prerequisites, limitations, or typical use cases.

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

get_moon_phases_rangeCInspect

Get moon phase information for a date range

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesEnd date (YYYY-MM-DD format)
formatNoOutput format (json or text)
latitudeNoLatitude for location-specific calculations
longitudeNoLongitude for location-specific calculations
start_dateYesStart date (YYYY-MM-DD format)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but only states the basic action without details on permissions, rate limits, data sources, or response behavior. It doesn't mention if location parameters are optional or how missing data is handled, leaving significant gaps in understanding the tool's operational traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded, consisting of a single, clear sentence that directly states the tool's purpose without any unnecessary words or fluff. Every part of the sentence earns its place by conveying essential information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no output schema, and no annotations), the description is incomplete. It lacks details on behavioral aspects, output format implications, and usage context, making it insufficient for an AI agent to fully understand how to invoke and interpret results without relying heavily on the schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all parameters well-documented in the input schema, so the description doesn't need to add parameter details. It implies a date range but doesn't provide extra semantic context beyond what the schema offers, aligning with the baseline score for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('moon phase information for a date range'), making it easy to understand what it does. However, it doesn't explicitly differentiate from its sibling tool 'get_moon_phase', which might be for a single date, leaving some ambiguity about when to choose one over the other.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as the sibling 'get_moon_phase' or other related tools like 'get_next_moon_phase'. It lacks context about prerequisites, exclusions, or specific scenarios where this tool is preferred, offering only a basic functional statement without usage instructions.

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

get_next_moon_phaseCInspect

Get the next occurrence(s) of a specific moon phase

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of occurrences to return. Defaults to 1.
dateNoStarting date (YYYY-MM-DD format). Defaults to current date.
formatNoOutput format (json or text)
phaseYesMoon phase to find

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions 'next occurrence(s)' which implies forward-looking temporal behavior, but doesn't disclose rate limits, error conditions, data sources, or output structure (e.g., whether results are sorted chronologically). For a tool with 4 parameters and no output schema, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core functionality with zero wasted words. It directly communicates the tool's purpose without redundancy or fluff, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no annotations, and no output schema, the description is insufficient. It lacks behavioral details (e.g., how results are returned, error handling), doesn't explain the relationship with sibling tools, and provides no context on data accuracy or limitations. For a tool with moderate complexity, this leaves significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema itself. The description adds no additional semantic context beyond implying temporal sequencing ('next'). It doesn't explain parameter interactions (e.g., how 'date' and 'count' work together) or format details, so it meets the baseline but doesn't enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('next occurrence(s) of a specific moon phase'), making the purpose unambiguous. It distinguishes from sibling tools like 'get_moon_phase' (current phase) and 'get_moon_phases_range' (range of phases), though not explicitly named. However, it doesn't fully differentiate from 'get_next_sun_event', which has a similar temporal pattern but different resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'get_moon_phase' (current phase) or 'get_moon_phases_range' (multiple phases over a date range). The description implies usage for future occurrences but doesn't specify contexts or exclusions, leaving the agent to infer based on tool names alone.

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

get_next_sun_eventBInspect

Get the next occurrence(s) of a specific sun event

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of occurrences to return. Defaults to 1.
dateNoStarting date (YYYY-MM-DD format). Defaults to current date.
eventYesSun event to find
formatNoOutput format (json or text)
latitudeYesLatitude for location-specific calculations
longitudeYesLongitude for location-specific calculations
timezoneNoTimezone for the results. Defaults to UTC.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Get') but doesn't explain what 'next occurrence(s)' entails (e.g., time-based calculations, location dependency, or output format details). For a tool with 7 parameters and no annotations, this lacks critical behavioral context like error handling or performance traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It's front-loaded with the main action and resource, making it easy to grasp quickly, which is ideal for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no output schema, and no annotations), the description is minimal. It states the purpose but lacks details on output format, error conditions, or how it integrates with sibling tools. While the schema covers parameters well, the description doesn't compensate for missing behavioral context, making it adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so parameters like 'event', 'latitude', and 'count' are well-documented in the schema. The description adds no additional semantic details beyond implying a sun event and occurrence count, which aligns with the schema but doesn't enhance understanding, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('next occurrence(s) of a specific sun event'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_sun_times' or 'get_sun_times_range', which might offer similar functionality, so it falls short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_sun_times' and 'get_sun_times_range' available, there's no indication of how this tool differs in context or when it's the preferred choice, leaving usage ambiguous.

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

get_parameter_definitionsBInspect

Get information about valid parameter values for NOAA API requests

ParametersJSON Schema
NameRequiredDescriptionDefault
parameterNoParameter type to get information about (time_zones, datums, units, tide_intervals, current_intervals, velocity_types, products, station_types, date_formats, output_formats). If not provided, returns information about all parameter types.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get information' but doesn't specify whether this is a read-only operation, if it requires authentication, rate limits, or what the return format looks like (e.g., JSON structure). For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 optional parameter, no nested objects) and high schema description coverage, the description is adequate but incomplete. It lacks details on behavioral aspects (e.g., read-only nature, output format) and there's no output schema, leaving gaps in understanding what information is returned. It meets minimum viability but has clear room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'parameter' well-documented in the schema itself. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain the significance of the parameter types listed). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get information about') and resource ('valid parameter values for NOAA API requests'). It distinguishes itself from sibling tools that fetch actual data (e.g., get_current_predictions, get_tide_predictions) by focusing on metadata about parameter values. However, it doesn't explicitly name the sibling tools it differs from, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning 'NOAA API requests' and the input schema suggests this tool helps understand valid values for other API calls. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., before making other NOAA API calls to validate parameters) or any exclusions. The context is clear but not fully articulated.

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

get_station_detailsCInspect

Get detailed information about a station

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format (json, xml)
stationYesStation ID
unitsNoUnits to use ("english" or "metric")

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states it 'gets' information without describing what 'detailed information' includes, whether authentication is needed, rate limits, error conditions, or response format. For a read operation with no annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'detailed information' includes, the response format, or how this differs from other station-related tools. Given the complexity implied by the sibling tools and lack of structured output information, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, so parameters are well-documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema descriptions. This meets the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and resource 'detailed information about a station', making the purpose understandable. However, it doesn't differentiate this tool from its many siblings that also retrieve station-related data (e.g., get_stations, get_sea_level_trends), so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With 20+ sibling tools focused on station data, there's no indication of what makes this tool distinct or when it's appropriate versus tools like get_stations or get_sea_level_trends.

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

get_stationsCInspect

Get list of stations

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format (json, xml)
typeNoStation type (waterlevels, currents, etc.)
unitsNoUnits to use ("english" or "metric")

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get list of stations' implies a read-only operation, but it doesn't disclose important behavioral traits like whether this returns all stations or a filtered subset, pagination behavior, rate limits, authentication requirements, or what the response format looks like. The description is too minimal for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just three words ('Get list of stations'), which is appropriately sized for a simple retrieval tool. It's front-loaded with the core purpose and contains zero wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and operates in a context with many similar sibling tools, the description is incomplete. It doesn't explain what the tool returns, how to interpret results, or how it differs from related tools. For a retrieval tool in a rich API environment, more context is needed to guide proper usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all three parameters (format, type, units) with descriptions and enums. The description adds no parameter information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting, but doesn't provide additional context about how parameters interact or typical usage patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get list of stations' clearly states the verb ('Get') and resource ('stations'), but it's vague about scope and doesn't differentiate from sibling tools like 'get_station_details' or 'get_water_levels'. It doesn't specify what kind of stations (e.g., water level stations, current stations) or what information is included in the list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (e.g., 'get_station_details' for detailed information, 'get_water_levels' for water level data), there's no indication of when this list retrieval is appropriate versus when other tools should be used instead.

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

get_sun_positionBInspect

Get sun position information for a specific date, time, and location

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate to get sun position for (YYYY-MM-DD format). Defaults to current date.
formatNoOutput format (json or text)
latitudeYesLatitude for location-specific calculations
longitudeYesLongitude for location-specific calculations
timeNoTime to get sun position for (HH:MM:SS format). Defaults to current time.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves information but doesn't cover aspects like rate limits, authentication needs, error handling, or the format of the returned sun position data. For a tool with no annotations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. It's appropriately sized for the tool's complexity, with no wasted words, making it easy for an AI agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (5 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits and usage guidelines. Without an output schema, it doesn't explain return values, which could be important for understanding the sun position data format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'date, time, and location,' which aligns with the parameters in the input schema (date, time, latitude, longitude). However, with 100% schema description coverage, the schema already fully documents all parameters, including defaults and constraints. The description adds no additional semantic value beyond what the schema provides, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get sun position information for a specific date, time, and location.' It uses a specific verb ('Get') and identifies the resource ('sun position information'), but it doesn't explicitly differentiate from sibling tools like 'get_sun_times' or 'get_next_sun_event', which is why it doesn't earn a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or specify contexts where this tool is preferred, such as for astronomical calculations versus tide-related tools in the server. This lack of comparative guidance limits its utility for an AI agent.

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

get_sun_timesBInspect

Get sun rise/set and other sun event times for a specific date and location

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate to get sun times for (YYYY-MM-DD format). Defaults to current date.
formatNoOutput format (json or text)
latitudeYesLatitude for location-specific calculations
longitudeYesLongitude for location-specific calculations
timezoneNoTimezone for the results. Defaults to UTC.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states what the tool does but doesn't disclose behavioral traits like rate limits, authentication needs, error handling, or what 'other sun event times' includes. For a tool with no annotations, this leaves significant gaps in understanding how it behaves operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place with no redundancy or unnecessary elaboration, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is minimally complete for a read-only tool. It specifies the action and inputs but lacks details on output format (beyond parameter hints), error cases, or behavioral context. For a tool with 5 parameters and no structured output documentation, it should provide more guidance on what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't clarify 'other sun event times' or provide examples). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get sun rise/set and other sun event times for a specific date and location'. It specifies the verb ('Get'), resource ('sun rise/set and other sun event times'), and scope ('for a specific date and location'). However, it doesn't explicitly distinguish this tool from its sibling 'get_sun_times_range', which might handle date ranges rather than single dates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_sun_times_range' (for date ranges) or 'get_next_sun_event' (for next event), nor does it specify prerequisites or exclusions. Usage is implied by the description but not explicitly stated.

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

get_sun_times_rangeBInspect

Get sun rise/set and other sun event times for a date range and location

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesEnd date (YYYY-MM-DD format)
formatNoOutput format (json or text)
latitudeYesLatitude for location-specific calculations
longitudeYesLongitude for location-specific calculations
start_dateYesStart date (YYYY-MM-DD format)
timezoneNoTimezone for the results. Defaults to UTC.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't clarify authentication needs, rate limits, error conditions, or what 'other sun event times' includes. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every element ('Get,' 'sun rise/set and other sun event times,' 'date range and location') earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and parameters indirectly, but lacks details on output format, error handling, or behavioral traits. Without annotations or output schema, more context would be helpful for an AI agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly (e.g., date formats, latitude/longitude ranges, timezone default). The description adds minimal value beyond the schema by mentioning 'date range and location,' which aligns with the required parameters. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get sun rise/set and other sun event times for a date range and location.' It specifies the action ('Get'), resource ('sun rise/set and other sun event times'), and scope ('date range and location'). However, it doesn't explicitly differentiate from sibling tools like 'get_sun_times' or 'get_next_sun_event', which likely have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_sun_times' (likely for a single date) or 'get_next_sun_event' (likely for the next event), nor does it specify prerequisites or exclusions. Usage is implied by the parameters but not explicitly stated.

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

get_tide_predictionsCInspect

Get tide prediction data

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD or MM/DD/YYYY)
dateNoDate to retrieve data for ("today", "latest", "recent", or specific date)
datumNoDatum to use (MLLW, MSL, etc.)
end_dateNoEnd date (YYYYMMDD or MM/DD/YYYY)
formatNoOutput format (json, xml, csv)
intervalNoInterval (hilo, hl, h, or a number for minutes)
rangeNoNumber of hours to retrieve data for
stationYesStation ID
time_zoneNoTime zone (gmt, lst, lst_ldt)
unitsNoUnits to use ("english" or "metric")

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Get tide prediction data' implies a read operation but reveals nothing about authentication requirements, rate limits, error conditions, response format, pagination, or whether this is a real-time vs. historical data source. For a 10-parameter tool with no annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally concise at three words with zero wasted language. It's appropriately sized for what it communicates, though the brevity contributes to its informational shortcomings in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, no output schema, no annotations, and 22 sibling tools), the description is inadequate. It doesn't explain what 'tide prediction data' actually contains, how it differs from sibling tools, what the response looks like, or any behavioral constraints. The agent would struggle to use this effectively without trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter information beyond what's already in the schema (which has 100% description coverage). While the schema thoroughly documents all 10 parameters with descriptions, enums, and requirements, the description doesn't provide additional context about how parameters interact (e.g., date vs. begin_date/end_date) or typical usage patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get tide prediction data' clearly states the verb ('Get') and resource ('tide prediction data'), making the purpose understandable. However, it doesn't differentiate this tool from its many siblings (like 'get_current_predictions', 'get_water_levels', etc.), leaving ambiguity about what specific type of tide prediction data this provides versus alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the 22 sibling tools listed. It doesn't mention any prerequisites, alternatives, or specific contexts where this tool is preferred over others (like 'get_current_predictions' or 'get_water_levels'), leaving the agent with no usage differentiation.

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

get_top_ten_water_levelsBInspect

Get top ten highest or lowest water levels for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
analysis_typeNoAnalysis type (highest or lowest)
datumNoDatum reference for DPAPI
formatNoOutput format (json, xml, csv)
stationYesStation ID
unitsNoUnits to use ("english" or "metric")

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't disclose any behavioral traits such as rate limits, authentication needs, error handling, or what the output looks like (e.g., format details beyond parameters). For a tool with no annotations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for the tool's complexity, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (5 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on behavioral context, output format implications, or differentiation from siblings. With no output schema, the description doesn't explain return values, which is a gap, but the high schema coverage helps offset this somewhat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with all parameters well-documented in the schema itself (e.g., 'analysis_type' as 'highest or lowest', 'datum' as 'Datum reference for DPAPI'). The description adds no additional meaning beyond what the schema provides, such as explaining parameter interactions or usage examples. With high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get top ten highest or lowest water levels for a station'. It specifies the verb ('Get'), resource ('water levels'), and scope ('top ten highest or lowest', 'for a station'). However, it doesn't explicitly distinguish this tool from sibling tools like 'get_extreme_water_levels' or 'get_water_levels', which likely serve similar purposes, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_extreme_water_levels' or 'get_water_levels', nor does it specify any prerequisites, exclusions, or contextual cues for selection. This leaves the agent without clear usage instructions.

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

get_water_levelsCInspect

Get water level data for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD or MM/DD/YYYY)
dateNoDate to retrieve data for ("today", "latest", "recent", or specific date)
datumNoDatum to use (MLLW, MSL, etc.)
end_dateNoEnd date (YYYYMMDD or MM/DD/YYYY)
formatNoOutput format (json, xml, csv)
rangeNoNumber of hours to retrieve data for
stationYesStation ID
time_zoneNoTime zone (gmt, lst, lst_ldt)
unitsNoUnits to use ("english" or "metric")

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data but doesn't mention any behavioral traits such as rate limits, authentication requirements, data freshness, or potential side effects. For a data retrieval tool with no annotation coverage, this leaves significant gaps in understanding how the tool behaves in practice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 9 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the returned water level data looks like (e.g., structure, units), how to handle multiple parameters like 'date' vs. 'begin_date/end_date', or any constraints on usage. For a tool with rich parameters but no structured output documentation, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter semantics beyond what's in the input schema, which has 100% coverage with detailed descriptions for all 9 parameters. Since the schema already fully documents parameters like 'station', 'date', and 'format', the description provides no additional value here, meeting the baseline score of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get water level data for a station'. It specifies the verb ('Get') and resource ('water level data'), making it understandable. However, it doesn't differentiate from sibling tools like 'get_extreme_water_levels' or 'get_top_ten_water_levels', which appear to retrieve similar water level data with different scopes or filters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools related to water levels (e.g., 'get_extreme_water_levels', 'get_top_ten_water_levels'), there is no indication of how this general water level data retrieval differs from those more specific tools, leaving the agent to guess based on tool names alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 24 tool updatesv1.0.0
    • First observedget_current_predictions
    • First observedget_currents
    • First observedget_extreme_water_levels
    • First observedget_high_tide_flooding_annual
    • First observedget_high_tide_flooding_daily
    • First observedget_high_tide_flooding_likelihoods
    • First observedget_high_tide_flooding_monthly
    • First observedget_high_tide_flooding_projections
    • First observedget_high_tide_flooding_seasonal
    • First observedget_meteorological_data
    • First observedget_moon_phase
    • First observedget_moon_phases_range
    • First observedget_next_moon_phase
    • First observedget_next_sun_event
    • First observedget_parameter_definitions
    • First observedget_sea_level_trends
    • First observedget_station_details
    • First observedget_stations
    • First observedget_sun_position
    • First observedget_sun_times
    • First observedget_sun_times_range
    • First observedget_tide_predictions
    • First observedget_top_ten_water_levels
    • First observedget_water_levels

TDQS

B3/5.0
Disambiguation4/5

Most tools have clearly distinct purposes targeting specific data types like tides, currents, water levels, flooding, sun/moon events, and station metadata. However, some potential overlap exists between 'get_current_predictions' and 'get_currents' (both related to currents) and among the multiple high tide flooding tools (daily, monthly, seasonal, annual), though their descriptions help differentiate timeframes.

Naming Consistency5/5

All 24 tools follow a consistent 'get_*' verb_noun pattern with snake_case, making them predictable and readable. The naming convention is uniform throughout, with no deviations in style or structure.

Tool Count3/5

With 24 tools, the count is borderline high for a focused domain like NOAA tides and currents data. While it covers many specific data types, it might feel heavy compared to typical well-scoped servers (3-15 tools), potentially overwhelming agents with numerous similar options.

Completeness5/5

The tool set provides comprehensive coverage for the NOAA tides and currents domain, including station lookup, various water/current/tide data, flooding projections, sun/moon events, and metadata. There are no obvious gaps; agents can access all relevant data types and workflows without dead ends.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RyanCardin15/Perigee-Tides'

If you have feedback or need assistance with the MCP directory API, please join our Discord server