geocode
Read only · PublicWorldwide place search (OSM Nominatim) returning name, area and lat/lon. Use to turn 'Hillsboro Inlet' or 'Bimini Bay' into coordinates for point tools.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 3,
"maxLength": 120
}
},
"required": [
"q"
],
"additionalProperties": false
}
},
"required": [
"query"
],
"additionalProperties": false
}
get_boat
Read only · PublicA single boat record from the library.
Inputs & required fields
{
"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
}
get_bridge
Read only · PublicA single bridge Feature with live clearance at `time` (default now).
Inputs & required fields
{
"type": "object",
"properties": {
"path": {
"type": "object",
"properties": {
"bridgeId": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[A-Za-z0-9:._-]+$"
}
},
"required": [
"bridgeId"
],
"additionalProperties": false
},
"query": {
"type": "object",
"properties": {
"time": {
"type": "string",
"format": "date-time",
"description": "time for live bridge clearance (default now)"
}
},
"required": [],
"additionalProperties": false
}
},
"required": [
"path"
],
"additionalProperties": false
}
get_briefing
Read only · PublicA 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.
Inputs & required fields
{
"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_chop_history
Read only · PublicGillby's native 0–10 chop algorithm, recorded versus reconstructed provenance, daily summaries, coverage and weekly trends. Missing hours remain gaps. Maximum 31 days.
Inputs & required fields
{
"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_conditions
Read only · PublicThe 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=<id> adds boat-specific chop comfort. For an arbitrary lat/lon use get_point_conditions.
Inputs & required fields
{
"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_dataset
Read only · PublicThe 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.
Inputs & required fields
{
"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
}
get_depth
Read only · PublicCharted depth below MLLW (ft) at lat/lon with its source (ENC band or DEM), whether it is land, a dredged channel, nearby charted hazards (rocks, obstructions, wrecks) and motor-restricted zones. Add the tide from get_tides for depth now.
Inputs & required fields
{
"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": [
"lat",
"lon"
],
"additionalProperties": false
}
},
"required": [
"query"
],
"additionalProperties": false
}
get_forecast
Read only · PublicHourly 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.
Inputs & required fields
{
"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_forecast_skill
Read only · PublicMean absolute error and bias of the raw wave/wind model vs the app's MOS-corrected forecast, by lead time, against the spot's buoy over the last `days` days, plus the paired series.
Inputs & required fields
{
"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
},
"query": {
"type": "object",
"properties": {
"var": {
"type": "string",
"enum": [
"wave_ht_ft",
"wind_kt"
],
"default": "wave_ht_ft"
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 90,
"default": 30
}
},
"required": [],
"additionalProperties": false
}
},
"required": [
"path"
],
"additionalProperties": false
}
get_hazards
Read only · PublicActive 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.
Inputs & required fields
{
"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_health
Read only · PublicRolls 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.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"detail": {
"type": "boolean",
"default": false
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
get_history
Read only · PublicTime series from the local archive for one source + variable, e.g. source=ndbc:41122 var=wave_ht_ft, or source=forecast:gfswave016 with spot=. Default window: last 30 days. Points are downsampled to maxPoints.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"source": {
"type": "string",
"minLength": 3,
"maxLength": 80,
"description": "ingest source, e.g. ndbc:41122, coops:8722956, forecast:gfswave016"
},
"var": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "variable, e.g. wave_ht_ft, wind_kt, water_temp_f, water_level_ft"
},
"from": {
"type": "string",
"format": "date-time"
},
"to": {
"type": "string",
"format": "date-time"
},
"spot": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[A-Za-z0-9:._-]+$"
},
"maxPoints": {
"type": "integer",
"minimum": 10,
"maximum": 20000,
"default": 5000
}
},
"required": [
"source",
"var"
],
"additionalProperties": false
}
},
"required": [
"query"
],
"additionalProperties": false
}
get_insights
Read only · Public3-8 insights about a spot computed from SQL aggregates (waves vs last year, model error by forecast day, lightning by hour, bacteria, inlet Stay-in share), each citing stat ids from stats[]. Generated daily; a cold spot takes 5-15 s. Rate limited.
Inputs & required fields
{
"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_jellyfish_observations
Read only · PublicPublished 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).
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"bbox": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$",
"description": "w,s,e,n in decimal degrees"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
get_lightning
Read only · PublicGOES-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').
Inputs & required fields
{
"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_lightning_climatology
Read only · PublicCount of GLM flashes within radiusMi of a spot by local (America/New_York) hour of day over the last `days` days. recordStart is the first flash on record, so short records undercount.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"spot": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[A-Za-z0-9:._-]+$"
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 3650,
"default": 30
},
"radiusMi": {
"type": "number",
"minimum": 1,
"maximum": 40,
"default": 10
}
},
"required": [
"spot"
],
"additionalProperties": false
}
},
"required": [
"query"
],
"additionalProperties": false
}
get_lightning_flashes
Read only · PublicGLM flashes from the last `minutes` minutes as a GeoJSON FeatureCollection (properties: t ISO, age_s, energy, area, qf).
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"minutes": {
"type": "integer",
"minimum": 1,
"maximum": 180,
"default": 30
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
get_poi
Read only · PublicA single POI GeoJSON Feature (properties vary by category: phone, amenities, fuel, bridge clearance/openings, regulation, sourceUrl).
Inputs & required fields
{
"type": "object",
"properties": {
"path": {
"type": "object",
"properties": {
"poiId": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[A-Za-z0-9:._-]+$"
}
},
"required": [
"poiId"
],
"additionalProperties": false
},
"query": {
"type": "object",
"properties": {
"time": {
"type": "string",
"format": "date-time",
"description": "time for live bridge clearance (default now)"
}
},
"required": [],
"additionalProperties": false
}
},
"required": [
"path"
],
"additionalProperties": false
}
get_poi_details
Read only · PublicFacility details gathered from FWC, OSM, Wikimedia Commons and the facility's own site: hours, fees, slips, fuel, photos, parking, amenities, with a source per field. 404 for categories without details.
Inputs & required fields
{
"type": "object",
"properties": {
"path": {
"type": "object",
"properties": {
"poiId": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[A-Za-z0-9:._-]+$"
}
},
"required": [
"poiId"
],
"additionalProperties": false
},
"query": {
"type": "object",
"properties": {
"refresh": {
"type": "boolean",
"default": false,
"description": "refetch now instead of the cached copy"
}
},
"required": [],
"additionalProperties": false
}
},
"required": [
"path"
],
"additionalProperties": false
}
get_point_conditions
Read only · PublicSame bundle as get_conditions for an arbitrary point inside the South Florida box, rounded to 0.02 deg; stations and zones come from the nearest spot. Returns 422 unprocessable when the point is on land (details.nearestSpot suggests a spot). Slower on a cold point (up to ~10 s). Rate limited.
Inputs & required fields
{
"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)"
},
"view": {
"type": "string",
"enum": [
"full",
"summary"
],
"default": "full",
"description": "summary = compact (~10 KB) for LLMs and widgets; full = every hourly point (~250 KB)"
},
"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"
},
"briefing": {
"type": "boolean",
"default": false,
"description": "also generate an AI briefing (slower)"
}
},
"required": [
"lat",
"lon"
],
"additionalProperties": false
}
},
"required": [
"query"
],
"additionalProperties": false
}
get_shark_research
Read only · PublicPublished 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).
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"bbox": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$",
"description": "w,s,e,n in decimal degrees"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
get_spot
Read only · PublicA single spot record plus now.scores (go/caution/nogo per activity for the current hour) when the worker has scored it.
Inputs & required fields
{
"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_tides
Read only · PublicPredicted 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.
Inputs & required fields
{
"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_zones_at
Read only · PublicEvery restriction zone containing lat/lon, with the rules in force at `time` (inForce[] lists only active ones, with plain text like 'Idle speed, no wake, Nov 15 - Mar 31'). Use before advising speed through an area.
Inputs & required fields
{
"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)"
},
"time": {
"type": "string",
"format": "date-time",
"description": "when to evaluate seasonal / weekend / time-of-day rules (default now)"
},
"length": {
"type": "number",
"minimum": 1,
"maximum": 2000,
"description": "vessel length, ft (some rules depend on it)"
}
},
"required": [
"lat",
"lon"
],
"additionalProperties": false
}
},
"required": [
"query"
],
"additionalProperties": false
}
list_boats
Read only · PublicBoats 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.
Inputs & required fields
{
"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
}
list_bridges
Read only · PublicBridges (POI category bridge) as GeoJSON: charted clearance, live clearance (ft) at `time` from the predicted tide + gauge residual, the tide station used, opening schedule (33 CFR) when regulated. Use to check whether a boat of a given air draft fits under at a time.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"bbox": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$",
"description": "w,s,e,n, e.g. -80.12,26.30,-80.05,26.40"
},
"q": {
"type": "string",
"minLength": 2,
"maxLength": 80,
"description": "name search, all words must match"
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[A-Za-z0-9:._-]+$"
},
"maxItems": 200,
"description": "comma-separated POI ids"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5000
},
"time": {
"type": "string",
"format": "date-time",
"description": "time for live bridge clearance (default now)"
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
list_cams
Read only · PublicPublic webcams within 15 mi, nearest first: live page URL, embed type, credit, the latest stored snapshot and the snapshot history. Use get_cam_frame for a fresh JPEG.
Inputs & required fields
{
"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,
"description": "Latitude, decimal degrees (WGS84)"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude, decimal degrees (WGS84)"
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
list_datasets
Read only · PublicIndex 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.
Inputs & required fields
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
list_sandbars
Read only · PublicKnown sandbars (Boca Lake, Hillsboro, Haulover, Stiltsville...) as GeoJSON points with descriptions and sources. Pair with get_tides for exposure at low tide.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"bbox": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$",
"description": "w,s,e,n in decimal degrees"
},
"q": {
"type": "string",
"minLength": 2,
"maxLength": 80
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
list_spots
Read only · PublicEvery 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.
Inputs & required fields
{
"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
}
list_zones
Read only · PublicRegulatory zones as GeoJSON with whether each is in force at `time` (activeNow: active, restriction, speed limit, until, plain-language text). types filters by restriction: idle-no-wake, slow-minimum-wake, speed-limit, no-motor, no-entry, no-anchoring, pole-troll, caution, other. active=true returns only zones in force. Not a substitute for posted signs.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"bbox": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$",
"description": "w,s,e,n in decimal degrees"
},
"types": {
"type": "array",
"items": {
"type": "string",
"enum": [
"idle-no-wake",
"slow-minimum-wake",
"speed-limit",
"no-motor",
"no-entry",
"no-anchoring",
"pole-troll",
"caution",
"other"
]
}
},
"active": {
"type": "boolean",
"default": false
},
"time": {
"type": "string",
"format": "date-time",
"description": "when to evaluate seasonal / weekend / time-of-day rules (default now)"
},
"length": {
"type": "number",
"minimum": 1,
"maximum": 2000,
"description": "vessel length, ft (some rules depend on it)"
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
plan_route
Read only · Public / optional OAuth vesselPlans a water route between two places for a boat's draft at a departure time, using NOAA ENC charted depths (DEM fallback) plus the predicted tide along the way. Returns the line (GeoJSON), distance (nm), ETA (min), minimum under-keel margin (ft) and where it occurs, per-leg warnings (shoals, hazards, restricted zones), tide stations used and, when no safe route exists now, the earliest safe departure in the next 24 h. Planning aid only, not for navigation. Can take 5-60 s; rate limited.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"from": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"pattern": "^(-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?|[a-z0-9-]+)$",
"description": "spot id (e.g. hillsboro-inlet) or 'lat,lon'"
},
"to": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"pattern": "^(-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?|[a-z0-9-]+)$",
"description": "spot id (e.g. hillsboro-inlet) or 'lat,lon'"
},
"via": {
"type": "string",
"maxLength": 400,
"pattern": "^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?(;-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?)*$",
"description": "waypoints 'lat,lon;lat,lon'"
},
"time": {
"type": "string",
"format": "date-time",
"description": "departure, ISO with offset (default now)"
},
"boat": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[A-Za-z0-9:._-]+$",
"description": "boat id; draft and speed default from it"
},
"draft": {
"type": "number",
"minimum": 0,
"maximum": 30,
"description": "draft, ft (overrides the boat's)"
},
"ukc": {
"type": "number",
"minimum": 0,
"maximum": 20,
"description": "under-keel clearance to keep, ft"
},
"speed": {
"type": "number",
"minimum": 1,
"maximum": 80,
"description": "planning speed, kt"
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
}
},
"required": [
"query"
],
"additionalProperties": false
}
search_pois
Read only · PublicMap POIs as a GeoJSON FeatureCollection. Filter by bbox, categories (cats), name (q) or ids. Categories: marina, fuel, ramp, restaurant, bridge, inlet, wreck, reef, dive, fishing, pier, sandbar, anchorage, no-wake, manatee, protected, beach, navaid, derelict. Bridges include live vertical clearance at `time` (charted clearance adjusted for the predicted tide + gauge residual). Fuel docks include fuel types and an as-of date.
Inputs & required fields
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"bbox": {
"type": "string",
"pattern": "^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$",
"description": "w,s,e,n, e.g. -80.12,26.30,-80.05,26.40"
},
"q": {
"type": "string",
"minLength": 2,
"maxLength": 80,
"description": "name search, all words must match"
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[A-Za-z0-9:._-]+$"
},
"maxItems": 200,
"description": "comma-separated POI ids"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5000
},
"time": {
"type": "string",
"format": "date-time",
"description": "time for live bridge clearance (default now)"
},
"cats": {
"type": "array",
"items": {
"type": "string",
"enum": [
"marina",
"fuel",
"ramp",
"restaurant",
"bridge",
"inlet",
"wreck",
"reef",
"dive",
"fishing",
"pier",
"sandbar",
"anchorage",
"no-wake",
"manatee",
"protected",
"beach",
"navaid",
"derelict"
]
},
"description": "comma-separated categories"
}
},
"required": [],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}