Skip to main content
Glama

Gillby

Active alerts and water hazards

get_hazards
Read-onlyIdempotent

Active NWS marine/coastal alerts (small craft, rip current, high surf, special marine, waterspout...) plus water hazards for a spot or lat+lon: rip current risk, red tide (FWC samples), bacteria (FDOH), sargassum, water clarity, king tide, Gulf Stream distance, lightning. Use before recommending swimming, diving or running an inlet. Interpretation: omit boat unless the user supplied or confirmed it. Describe lightning as flashes observed or not detected in the stated window, never a clear/safe guarantee. Report unavailable/QC-failed sources even when freshness.stale=false; fresh does not mean every source is usable. Model sea height is not breaking surf height. Tide heights at different local MLLW gauges do not establish relative channel depths. High tide is not necessarily slack current. For kitesurfing use get_conditions with kiteStyle (freeride/waves/foil), kiteExperience and rider-supplied kiteMinWindKt/kiteMaxWindKt. Read kiteboarding for weather screening, gust spread and explicitly unverified launch status. Never infer the rider wind range, legal launch access or rescue coverage. Activity keys: kite, surf, skim (flatland), skim-wave (wave riding), paddle (flatwater paddleboard), sup-surf (SUP surf). Skim suitability is unscored without shoreline observations; missing scores must not inherit another activity. Offshore wind can favor surf while increasing paddleboard drift risk. A point depth cannot prove route clearance. Do not invent detection percentages, future readings, vessel ownership, or app settings instructions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower, and the description adds real behavioral context: it returns source and freshness metadata, QC-failed or unavailable sources must still be reported even when freshness.stale=false, and "fresh" does not imply every source is usable. It also fixes unit and direction conventions (ft, kt, s, F, mi; directions FROM). It does not describe response shape, auth or rate limits, so it is strong but not exhaustive.

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

Conciseness3/5

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

The content is front-loaded well (what it returns, then when to use it), but the middle is an undifferentiated block of interpretation rules spanning kitesurfing, skim/SUP scoring, offshore wind drift and anti-hallucination prohibitions ("Do not invent detection percentages, future readings, vessel ownership, or app settings instructions"). Several of these are model-behavior guardrails rather than tool-selection facts, and the run-on prose makes it hard to scan.

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

Completeness4/5

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

For a multi-source aggregation tool with no output schema and only one nested parameter, the description does the heavy lifting: it enumerates the covered hazard domains, states that data comes with source/freshness metadata, and flags interpretation traps (model sea height is not surf height, high tide is not slack current). What is missing is any sense of the returned structure or which sources may be absent.

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

Parameters4/5

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

The nested schema already documents lat, lon and spot, and the description adds only the input-mode hint "for a spot or lat+lon" plus an instruction to omit boat unless the user supplied or confirmed it. That boat reference has no matching schema property, which is mildly confusing, but the geographic-vs-spot choice is clear.

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

Purpose5/5

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

The opening sentence names a specific resource (active NWS marine/coastal alerts plus water hazards) and enumerates exactly what it aggregates: rip current risk, red tide, bacteria, sargassum, water clarity, king tide, Gulf Stream distance, lightning. That enumeration lets an agent distinguish this composite hazard tool from the single-hazard siblings (get_marine_alerts, get_rip_risk, get_red_tide, get_lightning) without opening any schema. Scope (a spot or lat+lon) is stated immediately.

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

Usage Guidelines4/5

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

It gives an explicit trigger - "Use before recommending swimming, diving or running an inlet" - and names an alternative for one case: kitesurfing should go to get_conditions with kiteStyle/kiteExperience instead. It stops short of a full when/when-not map (e.g. it never says to use get_marine_alerts directly for alert-only lookups), so it is clear context without complete exclusions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.