KaiCast Ocean Conditions
Server Details
Ocean conditions by location: water visibility, swell, wind, tide, plus dive and snorkel spot picks.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct output: coverage metadata (list_coverage), facts for one spot (get_conditions), best spot picks (recommend_spot), and best day pick (best_day). The overlap is between best_day and recommend_spot, which share ranking logic but are clearly separated by dimension (time-in-window vs spots-in-area), so descriptions resolve the ambiguity.
All names are snake_case, and get_conditions/list_coverage/recommend_spot follow a clean verb_noun pattern. best_day deviates as an adjective_noun that doesn't fit the verb_noun convention, but it remains readable and unambiguous.
Four tools is lean but well-matched to the domain: coverage discovery, raw facts, spot ranking, and day ranking. Each tool earns its place with no redundant surface, though the set sits near the thin end of the spectrum.
The surface covers the full decision lifecycle: what's covered (list_coverage), raw conditions (get_conditions), ranking by spot (recommend_spot), and ranking by day (best_day). Minor gaps exist (e.g. no spot lookup by name or comparison of multiple spots side by side), but core workflows are closed.
Available Tools
4 toolsbest_dayFind the best dayARead-onlyIdempotentInspect
Which day in a window (max 7 days) is best for an activity at a destination — a spot, a region, or lat+lon with a radius — and why, versus the runner-up. Returns every day's best score, confidence, caveats and a KaiCast spot card for the winner. Free during early access.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Window end, inclusive, at most 7 days. Default: from + 6. | |
| lat | No | Latitude, decimal degrees. Use with lon. | |
| lon | No | Longitude, decimal degrees. Use with lat. | |
| from | No | Window start, spot-local. Default: today. | |
| spot | No | Spot id, e.g. "hanauma-bay". | |
| region | No | Region id, e.g. "us-hi-oahu". | |
| activity | Yes | What the user wants to do. | |
| radius_km | No | Search radius around lat/lon in km (default 40, max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| best | No | |
| days | No | |
| cards | Yes | |
| schema | Yes | |
| source | Yes | |
| status | Yes | |
| message | No | |
| coverage | Yes | |
| disclaimer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful context beyond that: the hard 7-day window cap, the fact that it returns every day's score/confidence/caveats plus a spot card for the winner, and the 'free during early access' cost signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core question is front-loaded in the first clause, followed by a returns sentence and a one-line pricing note. Every sentence carries information; there is no filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with an output schema, the description covers scope, destination forms, window limits and result shape well. The remaining gap is behavioural edge cases — what happens when no destination form is supplied or when spot/region conflict with lat/lon — but the output schema carries the return contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning the schema does not enforce: it frames spot, region, and lat+lon+radius as three alternative ways to specify the destination, which is not expressed via oneOf/anyOf in the schema. It does not, however, clarify defaults or fallback behaviour for the date fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it answers 'which day in a window is best for an activity at a destination', and adds the differentiating detail of comparing the winner against a runner-up. It is clearly distinct from siblings like get_conditions (raw conditions) and recommend_spot (place recommendation), and it even names the destination forms it accepts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the agent can infer this is the tool for picking a day within a short window, and the 'max 7 days' and 'Free during early access' notes hint at scope and cost. However, it never says when to prefer this over get_conditions or recommend_spot, nor does it state prerequisites such as needing a resolvable spot/region.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conditionsGet ocean conditionsARead-onlyIdempotentInspect
Facts for ONE covered spot over up to 7 days: 3-hour forecast periods with condition score (0-100) and rating, water visibility (ft), swell height/period/direction, wind, tide state and height, water temperature, plus tide events and data quality. Pass a spot id, or lat+lon to use the nearest covered spot within 30 km. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last day, inclusive. At most 7 days after from. Default: from + 6. | |
| lat | No | Latitude; snaps to the nearest covered spot within 30 km. | |
| lon | No | Longitude; use with lat. | |
| from | No | First day, spot-local YYYY-MM-DD. Default: today. | |
| spot | No | Spot id, e.g. "electric-beach". Pass this OR lat+lon. |
Output Schema
| Name | Required | Description |
|---|---|---|
| spot | Yes | |
| schema | Yes | |
| source | Yes | |
| periods | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld=false), and the description adds real context beyond them: the 7-day cap, the 30 km snapping radius, the inclusion of a data-quality field, and that access is free. It does not mention pagination or any failure mode when no covered spot is within 30 km.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and scope, then the input rule and cost in a short second sentence. The long comma-separated enumeration of return fields is somewhat dense and partly duplicates the output schema, but it is not padded or repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers scope, date window, spot-vs-coordinate resolution, the 30 km fallback, and cost. With an output schema present, the return-value detail need not be in the description, and nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, including the spot-OR-lat/lon exclusivity. The description restates the spot-vs-lat/lon choice and the nearest-spot rule, adding little syntax or format detail beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (ocean conditions) with explicit scope: facts for ONE covered spot over up to 7 days, enumerated as 3-hour forecast periods. The 'ONE spot' scope cleanly separates it from siblings like best_day and recommend_spot without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear input-selection guidance ('Pass a spot id, or lat+lon to use the nearest covered spot within 30 km') and notes the tool is free, but never says when to prefer this over best_day or recommend_spot. Usage is implied by the fact-listing scope rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_coverageList KaiCast coverageARead-onlyIdempotentInspect
Which regions and spots KaiCast covers, and whether each region supports ranked decisions (spot picks and best-day answers) or facts only. Also lists supported activities and how directly each is modeled. Anywhere not listed is not covered. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Limit to one region id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| schema | Yes | |
| source | Yes | |
| regions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is low; the description still adds real value by disclosing the cost profile ("Free") and the semantic tiering of results (ranked decisions vs facts only). It does not add auth, rate-limit, or pagination context, but none is suggested by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences plus a one-word cost note, all front-loaded: coverage scope first, capability tiers second, activities third, and the negative boundary ("Anywhere not listed is not covered") immediately after. Nothing is redundant with the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-required-parameter metadata tool with full schema coverage and an output schema, the description supplies everything an agent needs: what is covered, how results are graded, the closed-world boundary, and that it is free. Return-value details are rightly delegated to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional region parameter with 100% schema description coverage, so the schema already documents its meaning ("Limit to one region id."). The description does not mention the region filter or what an unfiltered call returns, which is the baseline-3 case where structured fields carry the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (KaiCast coverage: regions, spots, supported activities) and what each entry conveys (ranked-decision capability vs facts-only). It is clearly distinguishable from the action-oriented siblings (best_day, get_conditions, recommend_spot), though it never names them explicitly to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Anywhere not listed is not covered" and "Free" give the agent a clear decision rule for interpreting results and a cost signal for when to call it. What is missing is an explicit statement that this should be consulted before recommend_spot/best_day for an unlisted region.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_spotRecommend spotsARead-onlyIdempotentInspect
Ranked top picks (max 5) for an activity in one area on one day — by region id, or lat+lon with a radius. Each pick has the best daylight window, why (from the published conditions), a confidence score with its factors, caveats, and a KaiCast spot card. Returns status "not_covered" / "conditions_only" / "activity_not_modeled" honestly instead of guessing. Activities: snorkel (native model), dive, freedive, spearfish (proxy model; spots in water closed to spearfishing are excluded), surf (not modeled). Free during early access.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude, decimal degrees. Use with lon. | |
| lon | No | Longitude, decimal degrees. Use with lat. | |
| date | No | Spot-local day to plan for. Default: today, or tomorrow once today's daylight has passed. Up to 6 days ahead. | |
| spot | No | Spot id, e.g. "hanauma-bay". | |
| limit | No | How many picks (default 3, max 5). | |
| region | No | Region id, e.g. "us-hi-oahu". | |
| activity | Yes | What the user wants to do. | |
| radius_km | No | Search radius around lat/lon in km (default 40, max 100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cards | Yes | |
| picks | Yes | |
| schema | Yes | |
| source | Yes | |
| status | Yes | |
| message | No | |
| coverage | Yes | |
| disclaimer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial behavior beyond them: the honest status returns ('not_covered', 'conditions_only', 'activity_not_modeled'), per-pick contents (daylight window, confidence with factors, caveats, spot card), which activities use native vs proxy models, that closed-to-spearfishing waters are excluded, and that it is free during early access. This is exactly the value-add the dimension asks for.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the core scope leads, followed by return shape, then activity caveats and pricing. Every sentence carries information, though the parenthetical-heavy activity sentence is crammed and requires a second read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description still summarizes the return shape (statuses and pick contents) in a way that sets expectations. Combined with full schema coverage and annotation-backed safety, an agent has everything needed to select and invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining the two alternative addressing modes (region vs lat+lon+radius) and by annotating activity semantics that the enum alone cannot convey — snorkel as native model, spearfish as proxy with exclusions, surf as unmodeled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource with scope: 'Ranked top picks (max 5) for an activity in one area on one day', including the two addressing modes (region id or lat+lon with radius). This is well beyond a restatement of the name. It stops short of 5 because it never explicitly names or contrasts with siblings like best_day, which is the closest adjacent tool (day-ranking vs spot-ranking).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the scope statement (one activity, one area, one day, up to 6 days ahead) and the activity list with modeling caveats. However, there is no explicit when-to-use/when-not or 'use best_day instead when you want to compare days' guidance, and no alternatives are named despite three sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
best_day2 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Region id from list_coverage, e.g. \"us-hi-oahu\"."New value: +"Region id, e.g. \"us-hi-oahu\"." - changed
Input schema / properties / spot / descriptionPrevious value: -"Spot id from list_coverage or get_conditions, e.g. \"hanauma-bay\"."New value: +"Spot id, e.g. \"hanauma-bay\"."
- Changed
recommend_spot2 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Region id from list_coverage, e.g. \"us-hi-oahu\"."New value: +"Region id, e.g. \"us-hi-oahu\"." - changed
Input schema / properties / spot / descriptionPrevious value: -"Spot id from list_coverage or get_conditions, e.g. \"hanauma-bay\"."New value: +"Spot id, e.g. \"hanauma-bay\"."
2 tool updates
- Changed
best_day2 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Region id, e.g. \"us-hi-oahu\"."New value: +"Region id from list_coverage, e.g. \"us-hi-oahu\"." - changed
Input schema / properties / spot / descriptionPrevious value: -"Spot id, e.g. \"hanauma-bay\"."New value: +"Spot id from list_coverage or get_conditions, e.g. \"hanauma-bay\"."
- Changed
recommend_spot2 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Region id, e.g. \"us-hi-oahu\"."New value: +"Region id from list_coverage, e.g. \"us-hi-oahu\"." - changed
Input schema / properties / spot / descriptionPrevious value: -"Spot id, e.g. \"hanauma-bay\"."New value: +"Spot id from list_coverage or get_conditions, e.g. \"hanauma-bay\"."
2 tool updates
- Changed
best_day2 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Region id from list_coverage, e.g. \"us-hi-oahu\"."New value: +"Region id, e.g. \"us-hi-oahu\"." - changed
Input schema / properties / spot / descriptionPrevious value: -"Spot id from list_coverage or get_conditions, e.g. \"hanauma-bay\"."New value: +"Spot id, e.g. \"hanauma-bay\"."
- Changed
recommend_spot2 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Region id from list_coverage, e.g. \"us-hi-oahu\"."New value: +"Region id, e.g. \"us-hi-oahu\"." - changed
Input schema / properties / spot / descriptionPrevious value: -"Spot id from list_coverage or get_conditions, e.g. \"hanauma-bay\"."New value: +"Spot id, e.g. \"hanauma-bay\"."
4 tool updates
- First observed
best_day - First observed
get_conditions - First observed
list_coverage - First observed
recommend_spot
Related MCP Connectors
Live scuba dive planning: forecast windows, best-time climatology, species seasons, 4,800+ sites.
Real-time surf, weather, trail status, volcano, ocean safety, and restaurants for Hawaii.
Nearest NOAA buoy readings, tides and 7-day swell forecast for 150+ surf spots.
Surf trip planner: live 0-100 Strike Scores, 10-day forecasts, and trip picks for 1,100+ spots.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time water temperature and tide predictions for any lake, river, ocean, bay, or beach using NOAA, USGS, and other sources.20 PyPIMIT
- AlicenseAqualityBmaintenanceLive scuba diving planning for AI agents — ranked dive-forecast windows near any place for any day, best-time climatology per destination, marine-life seasonality from GBIF sightings, and facts for 4,800+ dive sites. Free and read-only; hosted at https://pickadive.com/mcp.5MIT
- FlicenseNot gradedqualityCmaintenanceEnables checking live tide, swell, and wind data for La Jolla surf spots, with an AI agent that makes judgment calls like a local surfer.-
- AlicenseAqualityBmaintenanceBeach Safety MCP — comprehensive beach and surf conditions for any beach worldwide: waves, swell, wind, air and water temperature, UV index, rip current risk, and a 1-10 safety score. No API keys needed. Python, stdio transport.241MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.