# Gillby — full product and MCP reference > 99 tools and 124 defined Florida spots. Generated from tools/list at https://www.gillby.com/mcp. Input schemas retain nesting, types, required fields, allowed values, defaults and bounds. ## Product, availability and interpretation Gillby helps people find their window on Florida's water by connecting place, time and activity. Compare wind, waves, tides and nearby coastal places for boating, sailing, fishing, paddling, surfing, swimming, beach days and snorkeling. Florida is the current coverage area; data availability varies by place and source. Product status (reviewed October 19, 2026): - The web app includes a coastal map, activity forecasts, route/depth/bridge planning, vessel profiles, saved places and trips, float plans, friend requests and opt-in location sharing, coastal cameras and Ask Gillby chat. Account features require sign-in and appropriate permissions. - The web GPS speedometer uses device location while Gillby stays open in the foreground. An unavailable GPS speed remains unavailable. - Native iPhone, iPad, Apple Watch and Android apps are coming soon. Apple screenshots show development or simulator builds, including the iPad helm, widgets and supported Lock Screen / Dynamic Island session views. Do not describe these as publicly released apps. - Spotify in the native iPhone/iPad app is coming soon, subject to Spotify access approval and native release. Published player screenshots contain sample preview content, not a connected music session. Playback requires the Spotify app/account; on-demand playback requires Spotify Premium. - ChatGPT, Claude, Grok Bot and Muse marketplace listings are coming soon. Custom MCP setup is available on compatible clients today. Marketplace availability and account eligibility must be checked with the relevant platform. Use the public pages for product explanations and the API/MCP for current data. Screenshots and blog examples are historical; never use their readings as today's forecast. Check source names, observation/model times, freshness, advisories and missing or QC-rejected feeds. A fresh response does not mean every upstream source is available. Missing data is not a zero or an all-clear. Resolve a location with list_spots before requesting get_conditions using {"query":{"spot":"boca-inlet","view":"summary"}}. For future plans, use get_forecast with the user's requested time window and explicit time zone; do not answer from current conditions alone. Only include vessel dimensions or equipment limits that the user supplied or confirmed. Local modeled sea height and official marine-zone forecasts cover different waters and times; do not let a lower local estimate override an official advisory. Tide height is not channel depth, high tide is not necessarily slack current, and atmospheric visibility is not underwater visibility. Wildlife and fishing evidence are dated records, not live animal tracking or catch guarantees. Public marine tools need no API key or account. Personal account tools require the user's Gillby OAuth and explicit authorization for changes. Do not request or expose service credentials. Honor HTTP 429 and Retry-After. HTTP data responses use {data, meta}; errors use {error}. Preserve source attribution and timestamps in answers. Gillby supports planning; official charts, local notices, beach flags, closures and on-water judgment still matter. It is not an emergency tracking or rescue service. ## Public pages - [Gillby overview](https://www.gillby.com/welcome): Find your window on Florida water; product and release status. - [Features and screenshots](https://www.gillby.com/features): Web tools, GPS speedometer, chat, Apple development captures and Spotify preview. - [Florida water guide](https://www.gillby.com/florida-water): Regional and activity context. - [Local places](https://www.gillby.com/places): Distinct guides for Boca Inlet, Hillsboro Inlet, Deerfield Beach, Pompano Beach and Lake Boca. - [Compare your hours](https://www.gillby.com/compare): Shareable place, activity and forecast-hour comparison. - [Boating and sailing](https://www.gillby.com/activities/boating-sailing): Plan departure and return conditions. - [Paddling](https://www.gillby.com/activities/paddling): Wind, currents and launch context. - [Beach and snorkeling](https://www.gillby.com/activities/beach-snorkeling): Surf, water quality and available local observations. - [Deerfield Beach launches](https://www.gillby.com/launches/deerfield-beach): Mapped launch options and access checks. - [FAQ](https://www.gillby.com/faq): Consumer and developer questions, data limitations and account access. - [Full agent reference](https://www.gillby.com/llms-full.txt): 99 live tool schemas, parameters, auth notes and product context. - [Gillby Water skill](https://www.gillby.com/skills/gillby-water): Open-source planning skill, installation and example prompts. - [AI setup](https://www.gillby.com/integrations): Custom MCP setup; marketplace availability and OAuth. - [Tool directory](https://www.gillby.com/integrations/tools): Human-readable tool descriptions. - [Developers](https://www.gillby.com/developers): HTTP API examples and response conventions. - [OpenAPI schema](https://www.gillby.com/api/v1/openapi.json): Machine-readable HTTP API contract. - [Verified spots](https://www.gillby.com/api/v1/spots): 124 defined Florida spots; resolve IDs before data calls. - [Service health](https://www.gillby.com/api/health): Current service and data availability; may report degraded status. - [Journal](https://www.gillby.com/blog): Dated practical coastal guides and product stories. - [Launch film](https://www.gillby.com/blog/meet-gillby-florida-water-film): Gillby Florida water launch video. - [GPS speedometer guide](https://www.gillby.com/blog/boat-gps-speedometer-phone-tablet): Phone and tablet GPS planning context. - [Help](https://www.gillby.com/help): Support and setup. - [Privacy](https://www.gillby.com/privacy): Account and location privacy. - [Terms](https://www.gillby.com/terms): Service terms and limitations. - [Sitemap](https://www.gillby.com/sitemap.xml): Public discovery pages. ## MCP connection and calling convention Endpoint: https://www.gillby.com/mcp (Streamable HTTP). Public tools require no API key. Personal account tools require the user's Gillby OAuth. Configure compatible clients with this URL; marketplace listings are separate. ```json { "mcpServers": { "gillby": { "type": "http", "url": "https://www.gillby.com/mcp" } } } ``` MCP tools/call example (arguments retain the query object): ```json { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "get_conditions", "arguments": { "query": { "spot": "boca-inlet", "view": "summary" } } } } ``` ## Start here ### get_health Rolls up whether the ingest worker is running, which feed families (ndbc, coops, nws, openmeteo, goes19, coastwatch...) have stale sources, government dataset status and the GLM lightning feed. status is ok | degraded | down; HTTP 503 only when down. Check this before trusting 'no data' from other tools. detail=true lists every source. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "detail": { "type": "boolean", "default": false } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### list_spots Every named South Florida spot the app scores, with its lat/lon, kind, region and the NOAA stations used for it. Use the returned id with conditions, forecast, tides, hazards and briefing tools. include=status adds the current-hour go/caution/nogo band per activity. Use this for a map of verified coastal spots: the MCP app panel renders an interactive Florida map with selectable spots, nearby camera markers and conditions. Coordinates are geographic locations, not safe navigation routes. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "include": { "type": "string", "enum": [ "status" ], "description": "status = add now.scores per activity" }, "region": { "type": "string", "enum": [ "palm-beach", "broward", "miami-dade", "keys" ] }, "homeZone": { "type": "boolean", "description": "only the Deerfield/Boca/Pompano home zone" } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_spot A single spot record plus now.scores (go/caution/nogo per activity for the current hour) when the worker has scored it. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "spotId": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$", "description": "Spot id, e.g. boca-inlet" } }, "required": [ "spotId" ], "additionalProperties": false } }, "required": [ "path" ], "additionalProperties": false } ``` ### get_conditions The full conditions bundle for a named spot: current waves (ft, s, deg FROM), wind (kt), tide (ft MLLW), water temp (F), activity scores with reasons, 7-day hourly forecast, hi/lo tides, best windows, NWS alerts, rip/red tide/bacteria hazards, lightning and an AI briefing. Kitesurf: kiteboarding contains rider-specific weather screening and unverified launch status; supply kiteStyle, kiteExperience, kiteMinWindKt and kiteMaxWindKt. No overall kite score or verified launch is implied. Activities: kite, surf, skim (flatland), skim-wave (wave riding), paddle (flatwater paddleboard), sup-surf (SUP surf). Skim scores are absent without shoreline observations; do not substitute other activity scores. Prefer view=summary unless you need every hour. boat= adds boat-specific chop comfort. For an arbitrary lat/lon use get_point_conditions. Start here for a current spot question with view=summary: this single result includes forecast, tides, scores, advisories, hazards, lightning and source status. Avoid duplicate hazard/tide calls unless a needed detail is absent. For beach questions, sea-model wave heights and NWS breaking-surf heights measure different things; their difference alone is not a forecast conflict. A swim no-go must not be followed by a recommendation to wade. 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. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$", "description": "Spot id, e.g. boca-inlet" }, "view": { "type": "string", "enum": [ "full", "summary" ], "default": "full", "description": "summary = compact (~10 KB) for LLMs and widgets; full = every hourly point (~250 KB)" }, "boat": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$", "description": "Boat id from GET /api/v1/boats (adds boat-specific chop comfort), or 'custom' with loa/beam/draft/deadrise/hull/cat/name" }, "loa": { "type": "number", "minimum": 1, "maximum": 200, "description": "custom boat length overall, ft" }, "beam": { "type": "number", "minimum": 1, "maximum": 60, "description": "custom boat beam, ft" }, "draft": { "type": "number", "minimum": 0.1, "maximum": 30, "description": "custom boat draft, ft" }, "deadrise": { "type": "number", "minimum": 1, "maximum": 40, "description": "custom boat deadrise at transom, deg" }, "weight": { "type": "number", "minimum": 1, "maximum": 200000, "description": "custom boat weight, lb" }, "cruise": { "type": "number", "minimum": 1, "maximum": 80, "description": "custom boat cruise speed, kt" }, "hull": { "type": "string", "maxLength": 40, "description": "custom boat hull type" }, "cat": { "type": "string", "maxLength": 40, "description": "custom boat category" }, "name": { "type": "string", "maxLength": 60, "description": "custom boat name" }, "kiteStyle": { "type": "string", "enum": [ "freeride", "waves", "foil" ], "default": "freeride" }, "kiteExperience": { "type": "string", "enum": [ "beginner", "independent", "advanced" ] }, "kiteMinWindKt": { "type": "number", "minimum": 1, "maximum": 60, "description": "Rider-supplied equipment wind minimum; never infer" }, "kiteMaxWindKt": { "type": "number", "minimum": 1, "maximum": 60, "description": "Rider-supplied equipment wind maximum; must exceed minimum" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_briefing A short headline + <=60-word body written from the live data (numbers validated against the fact sheet; falls back to a template when no model is available). source says claude/openai/template. Rate limited: may call an LLM on a cold cache. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "spotId": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$", "description": "Spot id, e.g. boca-inlet" } }, "required": [ "spotId" ], "additionalProperties": false } }, "required": [ "path" ], "additionalProperties": false } ``` ### get_source_status Fresh, stale, unavailable and QC-rejected sources used by spot conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_data_coverage Published dataset inventory and verified spot coverage; distinguishes unavailable data. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": {}, "required": [], "additionalProperties": false } ``` ## Forecast and conditions ### get_forecast Hourly forecast for a spot (or lat+lon) starting at `time` (default now) for `hours` hours: waves, swell/wind-wave split, wind, gusts, tide, current, precip/thunder chance, and go/caution/nogo scores with reasons per activity. Also returns 7 daily score rows and best windows. Units: ft, s, kt, deg FROM, F. Use one call per spot for a time-window comparison; request only the hours needed. Hourly rows include tide/current and score reasons. Do not infer one inlet has deeper water by comparing local tide heights. 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. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$", "description": "Spot id from GET /api/v1/spots, e.g. boca-inlet. Use this or lat+lon." }, "lat": { "type": "number", "minimum": -90, "maximum": 90, "description": "Latitude, decimal degrees (WGS84)" }, "lon": { "type": "number", "minimum": -180, "maximum": 180, "description": "Longitude, decimal degrees (WGS84)" }, "kiteStyle": { "type": "string", "enum": [ "freeride", "waves", "foil" ], "default": "freeride" }, "kiteExperience": { "type": "string", "enum": [ "beginner", "independent", "advanced" ] }, "kiteMinWindKt": { "type": "number", "minimum": 1, "maximum": 60, "description": "Rider-supplied equipment wind minimum; never infer" }, "kiteMaxWindKt": { "type": "number", "minimum": 1, "maximum": 60, "description": "Rider-supplied equipment wind maximum; must exceed minimum" }, "time": { "type": "string", "format": "date-time", "description": "window start, ISO with offset (default now)" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 48 }, "boat": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$", "description": "Boat id from GET /api/v1/boats (adds boat-specific chop comfort), or 'custom' with loa/beam/draft/deadrise/hull/cat/name" } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_water_temperature Water temperature for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_waves Wave height, period and swell for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_wind Wind and gusts for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_rain Rain probability and accumulation for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_thunder_forecast Thunderstorm forecast for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_uv_forecast UV forecast for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_visibility Atmospheric visibility for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_air_temperature Air temperature for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_pressure Air pressure for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_cloud_cover Cloud cover for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_chop Boat ride and chop (use get_chop_history for past trends) for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. For chop history or trends use get_chop_history with a verified spot ID. Preserve recorded versus reconstructed provenance, native 0–10 index and labels, coverage and gaps. Never invent assistant-defined rough/calm thresholds or silently substitute wave/wind series for native chop. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_currents Predicted inlet currents for a verified spot over the next hours. Includes timestamp, source status and explicit nulls when unavailable. Water temperature is F; atmospheric visibility is mi, not underwater visibility; current sign follows the assigned station convention. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_gulf_stream Approximate Gulf Stream edge for a verified spot. Preserve source sample dates and unavailable states. Satellite clarity is a relative index, not measured dive visibility. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_surf_forecast NWS surf zone forecast for a verified spot. Preserve source sample dates and unavailable states. Satellite clarity is a relative index, not measured dive visibility. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_chop_history Gillby's native 0-10 chop series: the latest 72 hours publicly, up to 31 days with a free Gillby account (OAuth sign-in); daily mean/max, coverage and 7-day trends. Recorded outputs and historical model reconstructions are identified separately. Never replace these with assistant-defined Calm/Moderate/Rough cutoffs or fabricate gaps. For chop history or trends use get_chop_history with a verified spot ID. Preserve recorded versus reconstructed provenance, native 0–10 index and labels, coverage and gaps. Never invent assistant-defined rough/calm thresholds or silently substitute wave/wind series for native chop. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "from": { "type": "string", "format": "date-time" }, "to": { "type": "string", "format": "date-time" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_history Read stored observations or forecast history for source and var. Forecast source uses forecast:model and requires spot. Public access covers the latest 72 hours; a free Gillby account (OAuth sign-in) allows windows up to 31 days; up to 1000 points. Latest revision/run wins. Rejected and suspect rows are excluded; unreviewed rows retain quality metadata. For chop history or trends use get_chop_history with a verified spot ID. Preserve recorded versus reconstructed provenance, native 0–10 index and labels, coverage and gaps. Never invent assistant-defined rough/calm thresholds or silently substitute wave/wind series for native chop. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "source": { "type": "string", "minLength": 1, "maxLength": 80 }, "var": { "type": "string", "minLength": 1, "maxLength": 40 }, "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "from": { "type": "string", "format": "date-time" }, "to": { "type": "string", "format": "date-time" }, "maxPoints": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 500 } }, "required": [ "source", "var" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_observations Actual buoy and station observations for a spot with timestamps. These may differ from blended forecast conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_wave_models Published wave-model series and model spread for a spot; absent models stay unavailable. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_departure_windows Published best windows filtered by activity. No windows means none were supplied, not a guarantee that every other hour is unsafe. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "activity": { "type": "string", "enum": [ "boating", "sailing", "paddle", "sup-surf", "kite", "skim", "skim-wave", "swim", "dive", "fishing-inshore", "fishing-offshore", "surf", "inlet" ] } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_activity_scores Hourly published activity scores with reasons and vetoes. Missing activity scores are unscored. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "hours": { "type": "integer", "minimum": 1, "maximum": 168, "default": 24 }, "activity": { "type": "string", "enum": [ "boating", "sailing", "paddle", "sup-surf", "kite", "skim", "skim-wave", "swim", "dive", "fishing-inshore", "fishing-offshore", "surf", "inlet" ] } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### compare_spots Compare current conditions for up to five verified comma-separated spot IDs. Partial failures remain explicit. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spots": { "type": "string", "minLength": 1, "maxLength": 500 } }, "required": [ "spots" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ## Tides, hazards and alerts ### get_tides Predicted high and low tides (ft above MLLW, NOAA CO-OPS) for the next `days` days at a spot or lat+lon, the hourly tide height curve and inlet current (kt, + flood / - ebb), plus sunrise/sunset and moon phase. Times are ISO with the Eastern offset. 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. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$", "description": "Spot id from GET /api/v1/spots, e.g. boca-inlet. Use this or lat+lon." }, "lat": { "type": "number", "minimum": -90, "maximum": 90, "description": "Latitude, decimal degrees (WGS84)" }, "lon": { "type": "number", "minimum": -180, "maximum": 180, "description": "Longitude, decimal degrees (WGS84)" }, "days": { "type": "integer", "minimum": 1, "maximum": 7, "default": 3 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_hazards 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. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$", "description": "Spot id from GET /api/v1/spots, e.g. boca-inlet. Use this or lat+lon." }, "lat": { "type": "number", "minimum": -90, "maximum": 90, "description": "Latitude, decimal degrees (WGS84)" }, "lon": { "type": "number", "minimum": -180, "maximum": 180, "description": "Longitude, decimal degrees (WGS84)" } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_lightning GOES-19 GLM lightning. With lat+lon: level (clear | watch 10-25 mi | danger < 10 mi in the last 5 min), nearest strike distance (mi) and time, strikes in 15 min, all-clear time (30 min after the last strike within 10 mi), SPC thunder outlook, and the last 30 min of flashes. Without lat/lon: status per spot. When the feed is stale, status is null and unavailableReason explains why (never a false 'clear'). Prefer list_spots for named spot coordinates. State no flashes detected in the observed window rather than no lightning exists. Stale/incomplete coverage means unknown. Do not supply detection rates that are absent from this result. 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. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90, "description": "Latitude, decimal degrees (WGS84)" }, "lon": { "type": "number", "minimum": -180, "maximum": 180, "description": "Longitude, decimal degrees (WGS84)" } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_navigation_notices USCG local notices to mariners from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_derelict_vessels Reported derelict vessels from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_park_alerts Coastal national park alerts and closures from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_rip_risk Rip current risk for a verified spot. Preserve source sample dates and unavailable states. Satellite clarity is a relative index, not measured dive visibility. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_king_tide King tide forecast for a verified spot. Preserve source sample dates and unavailable states. Satellite clarity is a relative index, not measured dive visibility. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_marine_alerts Active and upcoming alerts for a spot, retaining start/end times and source links. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ## Routes, depth and boats ### list_boats Boats with published specs (LOA, beam, draft, deadrise, weight, hull type, fuel, cruise speed) and their sources. Pass a boat id to conditions/forecast/routes for boat-specific comfort and draft. The user's boat is contender-21-open-2008. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 2, "maxLength": 60, "description": "make/model search" }, "category": { "type": "string", "maxLength": 40 }, "limit": { "type": "integer", "minimum": 1, "maximum": 1000 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_boat A single boat record from the library. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "boatId": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "boatId" ], "additionalProperties": false } }, "required": [ "path" ], "additionalProperties": false } ``` ### plan_route Requires a free Gillby account (OAuth sign-in). Chart-aware water routing between from/to spot IDs or lat,lon. Supply a confirmed library boat ID or measured draft, with beam, airDraft, ukc, bridgeMargin and speed overrides in feet/knots. Checks chart depths and tides along the geometry, samples across supplied beam, identifies bridges and restrictions, checks predicted MHW bridge clearance when data permits, and adds route weather samples. Does not infer saved vessel settings. Supports ordered via stops and a hard corridor=icw constraint. Cold charts may take 110 seconds. 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. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "via": { "type": "string", "minLength": 1, "maxLength": 800, "description": "Up to eight required stops in order: spot IDs or lat,lon separated by semicolons. Stops may snap up to 300 m; inspect reached offsets. No straight-line gaps are implied safe." }, "corridor": { "type": "string", "enum": [ "any", "icw" ], "default": "any", "description": "icw is a hard USACE/FWC published ICW channel boundary, with no ocean fallback. Unknown/missing channel or depth coverage returns no verified route." }, "from": { "type": "string", "minLength": 1, "maxLength": 80 }, "to": { "type": "string", "minLength": 1, "maxLength": 80 }, "draft": { "type": "number", "minimum": 0.3, "maximum": 15 }, "beam": { "type": "number", "minimum": 1, "maximum": 60 }, "airDraft": { "type": "number", "minimum": 0, "maximum": 150 }, "bridgeMargin": { "type": "number", "minimum": 0, "maximum": 20 }, "ukc": { "type": "number", "minimum": 0, "maximum": 10 }, "speed": { "type": "number", "minimum": 3, "maximum": 60 }, "boat": { "type": "string", "minLength": 1, "maxLength": 120 }, "time": { "type": "string", "format": "date-time" } }, "required": [ "from", "to" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_depth Actual NOAA ENC chart depth and optional DEM depth at a Florida coordinate, with charted hazards, channel context and restriction zones. A point check does not prove clearance along a route. 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. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "lat": { "type": "number", "minimum": 24, "maximum": 31 }, "lon": { "type": "number", "minimum": -88, "maximum": -78 } }, "required": [ "lat", "lon" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### list_sandbars Search published sandbars by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. For a named recreational/scored spot such as Lake Boca Sandbar, use list_spots first to get verified coordinates and IDs. This search is for places absent from the spot catalog; avoid repeated searches for an already cataloged spot. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### list_bridges Search published bridges by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### check_route_conditions Weather and marine conditions at up to five ordered spot IDs. Checks sampled stops only; does not create a navigable route or check depth, bridges, zones, or conditions between stops. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spots": { "type": "string", "minLength": 1, "maxLength": 500 } }, "required": [ "spots" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ## Places and cams ### get_protected_areas Marine protected areas from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_marinas Search published marinas by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_fuel_docks Search published fuel docks by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_boat_ramps Search published boat ramps by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_anchorages Search published anchorages by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_reefs Search published reefs by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_wrecks Search published wrecks by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_dive_sites Search published dive sites by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_beaches Search published beaches by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_waterfront_dining Search published waterfront restaurants by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_inlets Search published inlets by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### find_piers Search published piers by name or west,south,east,north bbox. Verify access and operating details with the facility. Bridge data is published, not a live clearance calculation. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### search_pois Search public marine POIs. Optional cats is a comma-separated category list. Fuel prices and current bridge clearance are not verified. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 80 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }, "cats": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_poi Look up a published coastal POI by its exact ID. Does not refresh facility details or calculate live bridge clearance. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "id": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": [ "id" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### list_cams Live source links and credits near a spot or coordinate; archived imagery may be unavailable. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" }, "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_camera_image Fetch a public camera JPEG with source timestamp metadata for the Gillby panel. Returns image bytes through MCP, without a browser network request. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "camId": { "type": "string", "pattern": "^[a-z0-9-]+$", "maxLength": 100 } }, "required": [ "camId" ], "additionalProperties": false } ``` ## Water quality and marine life ### get_shark_research Published Florida shark research occurrences with observation dates, location uncertainty, source credits and licenses. Historical acoustic detections and tag releases, not live shark tracking or beach warnings. No records does not mean sharks are absent. Use bbox to narrow the published sample; limit defaults to 20 (maximum 100). Shark, jellyfish and man-of-war records are dated published observations, not live tracking, beach warnings, abundance estimates or swimming-safety scores. Preserve observation dates, uncertainty, attribution and source availability. No records does not mean the animals are absent. Source checked time is not observation time. Man-of-war are siphonophores, not true jellyfish. Local lifeguard links are not ingested current warnings; check the source report date. Never apply NOAA's Chesapeake sea-nettle forecast to Florida. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_jellyfish_observations Published Florida jellyfish, box jellyfish and man-of-war observations from OBIS and iNaturalist, with observation dates, uncertainty, observer credits and licenses. Includes official Boca Raton/Fort Lauderdale lifeguard-report links. Community records are not live beach warnings; no sightings does not establish absence. Man-of-war are siphonophores. Use bbox to narrow the sample; limit defaults to 20 (maximum 100). Shark, jellyfish and man-of-war records are dated published observations, not live tracking, beach warnings, abundance estimates or swimming-safety scores. Preserve observation dates, uncertainty, attribution and source availability. No records does not mean the animals are absent. Source checked time is not observation time. Man-of-war are siphonophores, not true jellyfish. Local lifeguard links are not ingested current warnings; check the source report date. Never apply NOAA's Chesapeake sea-nettle forecast to Florida. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_canal_discharges Canal discharge and freshwater releases from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_lake_okeechobee Lake Okeechobee stage and releases from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_usgs_water USGS flow, salinity and water temperature from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_chlorophyll Satellite chlorophyll and water color from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_temperature_fronts Satellite sea temperature fronts from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_coral_heat Coral heat stress and bleaching outlook from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_algae_reports Reported algae samples from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_fish_kills Reported fish kills from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_pollution_notices Pollution incident notices from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_coastal_sensors SECOORA coastal sensor observations from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_sargassum_outlook Sargassum research product availability from the published agency dataset, with source and availability. Empty reports do not establish safe conditions. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "category": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_beach_bacteria Beach bacteria samples for a verified spot. Preserve source sample dates and unavailable states. Satellite clarity is a relative index, not measured dive visibility. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_red_tide Red tide samples for a verified spot. Preserve source sample dates and unavailable states. Satellite clarity is a relative index, not measured dive visibility. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_water_clarity Satellite water clarity for a verified spot. Preserve source sample dates and unavailable states. Satellite clarity is a relative index, not measured dive visibility. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### get_sargassum Local sargassum risk for a verified spot. Preserve source sample dates and unavailable states. Satellite clarity is a relative index, not measured dive visibility. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "spot": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "spot" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ## Datasets ### list_datasets Index of government datasets (SFWMD discharges, Lake O, USGS, CoastWatch chlorophyll / SST fronts, coral heat, USCG notices, derelicts, MPAs, algae, fish kills, shark research and jellyfish/man-of-war observations) with ok/stale/unavailable status and last-good time. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": {}, "required": [], "additionalProperties": false } ``` ### get_dataset The latest payload of one dataset from list_datasets, including sharks and jellyfish. These marine-life records are dated observations, not live beach warnings; no records does not imply absence. bbox filters list datasets; category filters USCG notices (e.g. bridge,hazard); homeZone=true limits discharges to the home zone; geometry=true includes MPA polygons. 503 when the dataset has never loaded. Shark, jellyfish and man-of-war records are dated published observations, not live tracking, beach warnings, abundance estimates or swimming-safety scores. Preserve observation dates, uncertainty, attribution and source availability. No records does not mean the animals are absent. Source checked time is not observation time. Man-of-war are siphonophores, not true jellyfish. Local lifeguard links are not ingested current warnings; check the source report date. Never apply NOAA's Chesapeake sea-nettle forecast to Florida. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "datasetId": { "type": "string", "minLength": 1, "maxLength": 120, "pattern": "^[A-Za-z0-9:._-]+$" } }, "required": [ "datasetId" ], "additionalProperties": false }, "query": { "type": "object", "properties": { "bbox": { "type": "string", "pattern": "^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$", "description": "w,s,e,n in decimal degrees" }, "category": { "type": "array", "items": { "type": "string", "maxLength": 40 } }, "homeZone": { "type": "boolean" }, "geometry": { "type": "boolean" } }, "required": [], "additionalProperties": false } }, "required": [ "path" ], "additionalProperties": false } ``` ## Your account (OAuth) ### get_my_vessel Requires OAuth login to your Gillby account. Reads only your saved vessel and route clearance settings. No writes and no other account access. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": {}, "required": [], "additionalProperties": false } ``` ### plan_my_route Requires OAuth login. Uses your saved vessel, draft, air draft, speed, under-keel and bridge margins for actual chart routing. Explicit measurements override saved values. Never guesses missing required measurements. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "via": { "type": "string", "minLength": 1, "maxLength": 800, "description": "Up to eight required stops in order: spot IDs or lat,lon separated by semicolons. Stops may snap up to 300 m; inspect reached offsets. No straight-line gaps are implied safe." }, "corridor": { "type": "string", "enum": [ "any", "icw" ], "default": "any", "description": "icw is a hard USACE/FWC published ICW channel boundary, with no ocean fallback. Unknown/missing channel or depth coverage returns no verified route." }, "from": { "type": "string", "minLength": 1, "maxLength": 80 }, "to": { "type": "string", "minLength": 1, "maxLength": 80 }, "draft": { "type": "number", "minimum": 0.3, "maximum": 15 }, "beam": { "type": "number", "minimum": 1, "maximum": 60 }, "airDraft": { "type": "number", "minimum": 0, "maximum": 150 }, "bridgeMargin": { "type": "number", "minimum": 0, "maximum": 20 }, "ukc": { "type": "number", "minimum": 0, "maximum": 10 }, "speed": { "type": "number", "minimum": 3, "maximum": 60 }, "time": { "type": "string", "format": "date-time" } }, "required": [ "from", "to" ], "additionalProperties": false } }, "required": [ "query" ], "additionalProperties": false } ``` ### list_my_places Read your saved places and favorites. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": {}, "required": [], "additionalProperties": false } ``` ### get_my_place Read one saved place. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "id": { "type": "integer", "minimum": 1 } }, "required": [ "id" ], "additionalProperties": false } }, "required": [ "path" ], "additionalProperties": false } ``` ### save_my_place Save a place or favorite. Supply a unique requestId and reuse it when retrying the same save; reused IDs with different input are rejected. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "body": { "type": "object", "properties": { "requestId": { "type": "string", "minLength": 1, "maxLength": 80, "pattern": "^[A-Za-z0-9_-]{8,80}$" }, "place": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 120 }, "spotId": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80 }, "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "kind": { "type": "string", "minLength": 1, "maxLength": 30 }, "activity": { "type": "string", "enum": [ "boating", "sailing", "paddle", "sup-surf", "kite", "skim", "skim-wave", "swim", "dive", "fishing-inshore", "fishing-offshore", "surf", "inlet" ] }, "boatId": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80 }, "notes": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 2000 }, "sort": { "type": "number", "minimum": -1000000, "maximum": 1000000 } }, "required": [], "additionalProperties": false } }, "required": [ "requestId", "place" ], "additionalProperties": false } }, "required": [ "body" ], "additionalProperties": false } ``` ### update_my_place Update specified saved-place fields. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "id": { "type": "integer", "minimum": 1 } }, "required": [ "id" ], "additionalProperties": false }, "body": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 120 }, "spotId": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80 }, "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "kind": { "type": "string", "minLength": 1, "maxLength": 30 }, "activity": { "type": "string", "enum": [ "boating", "sailing", "paddle", "sup-surf", "kite", "skim", "skim-wave", "swim", "dive", "fishing-inshore", "fishing-offshore", "surf", "inlet" ] }, "boatId": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80 }, "notes": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 2000 }, "sort": { "type": "number", "minimum": -1000000, "maximum": 1000000 } }, "required": [], "additionalProperties": false } }, "required": [ "path", "body" ], "additionalProperties": false } ``` ### delete_my_place Delete a saved place. Repeat deletes return deleted=false. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "id": { "type": "integer", "minimum": 1 } }, "required": [ "id" ], "additionalProperties": false } }, "required": [ "path" ], "additionalProperties": false } ``` ### list_my_trips Read your saved trips. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": {}, "required": [], "additionalProperties": false } ``` ### get_my_trip Read one saved trip. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "id": { "type": "integer", "minimum": 1 } }, "required": [ "id" ], "additionalProperties": false } }, "required": [ "path" ], "additionalProperties": false } ``` ### save_my_trip Save a trip. Supply a unique requestId and reuse it on retry. Saving does not assess navigation safety. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "body": { "type": "object", "properties": { "requestId": { "type": "string", "minLength": 1, "maxLength": 80, "pattern": "^[A-Za-z0-9_-]{8,80}$" }, "trip": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 120 }, "from": { "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "label": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": [ "lat", "lon" ], "additionalProperties": false }, "to": { "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "label": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": [ "lat", "lon" ], "additionalProperties": false }, "via": { "type": "array", "items": { "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "label": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": [ "lat", "lon" ], "additionalProperties": false }, "maxItems": 20 }, "departAt": { "type": "string", "minLength": 1, "maxLength": 80, "format": "date-time" }, "returnAt": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80, "format": "date-time" }, "boatId": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80 }, "draftFt": { "type": [ "number", "null" ], "minimum": 0.1, "maximum": 30 }, "ukcFt": { "type": "number", "minimum": 0, "maximum": 20 }, "speedKt": { "type": "number", "minimum": 1, "maximum": 80 }, "activity": { "type": "string", "enum": [ "boating", "sailing", "paddle", "sup-surf", "kite", "skim", "skim-wave", "swim", "dive", "fishing-inshore", "fishing-offshore", "surf", "inlet" ] }, "notes": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 2000 }, "status": { "type": "string", "enum": [ "planned", "underway", "done", "cancelled" ] } }, "required": [ "name", "from", "to", "departAt" ], "additionalProperties": false } }, "required": [ "requestId", "trip" ], "additionalProperties": false } }, "required": [ "body" ], "additionalProperties": false } ``` ### update_my_trip Update specified trip fields; this does not recheck route safety. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "id": { "type": "integer", "minimum": 1 } }, "required": [ "id" ], "additionalProperties": false }, "body": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 120 }, "from": { "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "label": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": [ "lat", "lon" ], "additionalProperties": false }, "to": { "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "label": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": [ "lat", "lon" ], "additionalProperties": false }, "via": { "type": "array", "items": { "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "label": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": [ "lat", "lon" ], "additionalProperties": false }, "maxItems": 20 }, "departAt": { "type": "string", "minLength": 1, "maxLength": 80, "format": "date-time" }, "returnAt": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80, "format": "date-time" }, "boatId": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80 }, "draftFt": { "type": [ "number", "null" ], "minimum": 0.1, "maximum": 30 }, "ukcFt": { "type": "number", "minimum": 0, "maximum": 20 }, "speedKt": { "type": "number", "minimum": 1, "maximum": 80 }, "activity": { "type": "string", "enum": [ "boating", "sailing", "paddle", "sup-surf", "kite", "skim", "skim-wave", "swim", "dive", "fishing-inshore", "fishing-offshore", "surf", "inlet" ] }, "notes": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 2000 }, "status": { "type": "string", "enum": [ "planned", "underway", "done", "cancelled" ] } }, "required": [], "additionalProperties": false } }, "required": [ "path", "body" ], "additionalProperties": false } ``` ### delete_my_trip Delete a saved trip. Repeat deletes return deleted=false. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "path": { "type": "object", "properties": { "id": { "type": "integer", "minimum": 1 } }, "required": [ "id" ], "additionalProperties": false } }, "required": [ "path" ], "additionalProperties": false } ``` ### get_my_settings Read saved vessel, preferences and notification settings. Missing vessel measurements remain null. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": {}, "required": [], "additionalProperties": false } ``` ### update_my_settings Update only specified vessel or preference fields. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "body": { "type": "object", "properties": { "boatId": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 80 }, "draftFt": { "type": [ "number", "null" ], "minimum": 0.1, "maximum": 30 }, "airDraftFt": { "type": [ "number", "null" ], "minimum": 1, "maximum": 150 }, "bridgeMarginFt": { "type": "number", "minimum": 0, "maximum": 20 }, "ukcFt": { "type": "number", "minimum": 0, "maximum": 20 }, "cruiseKt": { "type": [ "number", "null" ], "minimum": 1, "maximum": 80 }, "defaultActivity": { "type": "string", "enum": [ "boating", "sailing", "paddle", "sup-surf", "kite", "skim", "skim-wave", "swim", "dive", "fishing-inshore", "fishing-offshore", "surf", "inlet" ] }, "homeSpotIds": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 80 }, "maxItems": 50 }, "units": { "type": "object", "properties": { "distance": { "type": "string", "enum": [ "nm", "mi" ] }, "temp": { "type": "string", "enum": [ "F", "C" ] } }, "required": [], "additionalProperties": false }, "theme": { "type": "string", "enum": [ "auto", "light", "dark" ] }, "view": { "type": "string", "enum": [ "auto", "desktop", "mobile" ] }, "alerts": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "macNotifications": { "type": "boolean" }, "quietStart": { "type": "string", "minLength": 1, "maxLength": 5, "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$" }, "quietEnd": { "type": "string", "minLength": 1, "maxLength": 5, "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$" }, "lightningMi": { "type": "number", "minimum": 1, "maximum": 50 }, "chopThreshold": { "type": "string", "minLength": 1, "maxLength": 30 }, "bestWindow": { "type": "boolean" } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } }, "required": [ "body" ], "additionalProperties": false } ``` ### get_my_notification_settings Read notification preferences and actual delivery availability. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": {}, "required": [], "additionalProperties": false } ``` ### update_my_notification_settings Save notification preferences. Hosted delivery is in-app only; this does not enable push, email or notifications on this AI client. Requires your Gillby account and explicit account consent. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "body": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "macNotifications": { "type": "boolean" }, "quietStart": { "type": "string", "minLength": 1, "maxLength": 5, "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$" }, "quietEnd": { "type": "string", "minLength": 1, "maxLength": 5, "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$" }, "lightningMi": { "type": "number", "minimum": 1, "maximum": 50 }, "chopThreshold": { "type": "string", "minLength": 1, "maxLength": 30 }, "bestWindow": { "type": "boolean" } }, "required": [], "additionalProperties": false } }, "required": [ "body" ], "additionalProperties": false } ``` ## Other ### get_fishing_insights Published Florida mahi, blue/white marlin, tarpon and snook evidence: dated NOAA commercial catches and research/community occurrences, source/license credits, coordinate uncertainty, seasonal record counts and configurable 0.25/0.10/0.05/0.02/0.01/0.005-degree heatmap cells. Historical records are not live fish locations, migration tracks, abundance, catch rates or catch probabilities. Sampling/fishing effort is uncorrected; absent records do not establish fish absence. from/to are inclusive YYYY-MM-DD observation dates; month pools all selected years. Source check time is not observation time. Recency weighting defaults to recent: exponential 365-day half-life based on observation dates, not source retrieval. weighting=historical gives equal weights. No upstream downloads on tool calls. Preserve species, observation dates, source credits, coordinate uncertainty, query coverage, partial/stale flags and fishing-effort bias. Heatmap color is record density, never fish abundance or catch odds. Commercial catches and occurrences must remain distinguishable. No generated migration paths. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "weighting": { "type": "string", "enum": [ "recent", "historical" ], "default": "recent" }, "cellDegrees": { "type": "number", "enum": [ 0.25, 0.1, 0.05, 0.02, 0.01, 0.005 ], "default": 0.05 }, "species": { "type": "string", "enum": [ "mahi", "blue-marlin", "white-marlin", "tarpon", "snook" ], "default": "mahi" }, "month": { "type": "integer", "minimum": 0, "maximum": 12, "default": 0 }, "from": { "type": "string", "minLength": 1, "maxLength": 10 }, "to": { "type": "string", "minLength": 1, "maxLength": 10 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "catchesOnly": { "type": "boolean", "default": false }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }, "offset": { "type": "integer", "minimum": 0, "maximum": 100000, "default": 0 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_fishing_records Published Florida mahi, blue/white marlin, tarpon and snook evidence: dated NOAA commercial catches and research/community occurrences, source/license credits, coordinate uncertainty, seasonal record counts and configurable 0.25/0.10/0.05/0.02/0.01/0.005-degree heatmap cells. Historical records are not live fish locations, migration tracks, abundance, catch rates or catch probabilities. Sampling/fishing effort is uncorrected; absent records do not establish fish absence. from/to are inclusive YYYY-MM-DD observation dates; month pools all selected years. Source check time is not observation time. Recency weighting defaults to recent: exponential 365-day half-life based on observation dates, not source retrieval. weighting=historical gives equal weights. No upstream downloads on tool calls. Preserve species, observation dates, source credits, coordinate uncertainty, query coverage, partial/stale flags and fishing-effort bias. Heatmap color is record density, never fish abundance or catch odds. Commercial catches and occurrences must remain distinguishable. No generated migration paths. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "weighting": { "type": "string", "enum": [ "recent", "historical" ], "default": "recent" }, "cellDegrees": { "type": "number", "enum": [ 0.25, 0.1, 0.05, 0.02, 0.01, 0.005 ], "default": 0.05 }, "species": { "type": "string", "enum": [ "mahi", "blue-marlin", "white-marlin", "tarpon", "snook" ], "default": "mahi" }, "month": { "type": "integer", "minimum": 0, "maximum": 12, "default": 0 }, "from": { "type": "string", "minLength": 1, "maxLength": 10 }, "to": { "type": "string", "minLength": 1, "maxLength": 10 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "catchesOnly": { "type": "boolean", "default": false }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }, "offset": { "type": "integer", "minimum": 0, "maximum": 100000, "default": 0 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ``` ### get_fishing_heatmap Published Florida mahi, blue/white marlin, tarpon and snook evidence: dated NOAA commercial catches and research/community occurrences, source/license credits, coordinate uncertainty, seasonal record counts and configurable 0.25/0.10/0.05/0.02/0.01/0.005-degree heatmap cells. Historical records are not live fish locations, migration tracks, abundance, catch rates or catch probabilities. Sampling/fishing effort is uncorrected; absent records do not establish fish absence. from/to are inclusive YYYY-MM-DD observation dates; month pools all selected years. Source check time is not observation time. Recency weighting defaults to recent: exponential 365-day half-life based on observation dates, not source retrieval. weighting=historical gives equal weights. No upstream downloads on tool calls. Preserve species, observation dates, source credits, coordinate uncertainty, query coverage, partial/stale flags and fishing-effort bias. Heatmap color is record density, never fish abundance or catch odds. Commercial catches and occurrences must remain distinguishable. No generated migration paths. Units: ft, kt, s, F, mi; directions FROM. Returns data and source/freshness metadata. Tool annotations: ```json { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true } ``` Input JSON Schema: ```json { "type": "object", "properties": { "query": { "type": "object", "properties": { "weighting": { "type": "string", "enum": [ "recent", "historical" ], "default": "recent" }, "cellDegrees": { "type": "number", "enum": [ 0.25, 0.1, 0.05, 0.02, 0.01, 0.005 ], "default": 0.05 }, "species": { "type": "string", "enum": [ "mahi", "blue-marlin", "white-marlin", "tarpon", "snook" ], "default": "mahi" }, "month": { "type": "integer", "minimum": 0, "maximum": 12, "default": 0 }, "from": { "type": "string", "minLength": 1, "maxLength": 10 }, "to": { "type": "string", "minLength": 1, "maxLength": 10 }, "bbox": { "type": "string", "minLength": 1, "maxLength": 100 }, "catchesOnly": { "type": "boolean", "default": false }, "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }, "offset": { "type": "integer", "minimum": 0, "maximum": 100000, "default": 0 } }, "required": [], "additionalProperties": false } }, "required": [], "additionalProperties": false } ```