Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Get AI-powered marine weather forecasts for any location worldwide
Get AI-powered marine weather forecasts for any location worldwide
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Get AI-powered marine weather forecasts for any location worldwide. Includes wind, waves, visibility, precipitation analysis with GO/CAUTION/NO-GO safety classifications.
SpotCast Forecasts: Get marine weather forecasts for any coordinates worldwide AI Safety Analysis: GO / CAUTION / NO-GO classifications for each day Vessel-Specific: Tailored recommendations based on boat type and size Multi-Language: Supports English, Spanish, French, Portuguese, Italian, Japanese
Sign up at https://developer.sealegs.ai โ you'll get 10 free credits to get started Generate an API key from your dashboard Need more? Add credits anytime ($10 = 200 forecast-days)
Add to your OpenClaw configuration: { skills: { entries: { "sealegs-marine-forecast": { enabled: true, apiKey: "sk_live_your_key_here" } } } } Or set the environment variable: export SEALEGS_API_KEY=sk_live_your_key_here
clawhub install sealegs-marine-forecast
// Miami, FL POST /v3/spotcast { "latitude": 25.7617, "longitude": -80.1918, "start_date": "2026-02-10T00:00:00Z", "num_days": 2, "vessel_info": {"type": "sailboat", "length_ft": 35} // optional } Sample response: { "id": "spc_FrZdSAs6T3cxbXiPtNZvxu", "coordinates": { "latitude": 25.7617, "longitude": -80.1918 }, "forecast_period": { "start_date": "2026-02-10T00:00:00-05:00", "end_date": "2026-02-11T23:59:59-05:00", "num_days": "2" }, "trip_duration_hours": "12", "metadata": { "location_name": "Miami Marina" }, "latest_forecast": { "status": "completed", "ai_analysis": { "summary": "Ideal conditions both days with light winds", "daily_classifications": [ { "date": "2026-02-10", "classification": "GO", "short_summary": "Outstanding conditions all day with light winds under 7kt and calm 1.1-1.6ft seas. Best window is morning 5:00 AM-12:00 PM with nearly calm 1-4kt northwest winds and comfortable 1.4ft seas at 11-second periods.", "summary": "Outstanding sailing conditions throughout Monday with exceptionally light winds and calm seas. Morning hours offer the best window with nearly calm 1-4kt northwest winds and comfortable 1.4ft seas at 11-second periods from the northeast." }, { "date": "2026-02-11", "classification": "GO", "short_summary": "Exceptional conditions with very light winds 1-6kt and minimal 1.2-1.3ft seas all day. Best window 9:00 AM-1:00 PM offers glassy conditions with 1-3kt winds and 1.2ft seas at 11-second periods.", "summary": "Exceptional boating conditions on Tuesday with very light winds and minimal seas throughout the day. Morning through midday provides ideal glassy conditions with 1-3kt east-southeast winds and 1.2ft seas at 10-11 second periods from the northeast." } ] } } }
OperationEndpointCostCreate forecastPOST /v3/spotcast1 credit/dayGet forecastGET /v3/spotcast/{id}FreeCheck statusGET /v3/spotcast/{id}/statusFreeRefresh forecastPOST /v3/spotcast/{id}/refresh1 credit/dayList forecasts for SpotCastGET /v3/spotcast/{id}/forecastsFreeGet specific forecastGET /v3/spotcast/{id}/forecast/{forecast_id}FreeList SpotCastsGET /v3/spotcastsFreeGet balanceGET /v3/account/balanceFree
Wind speed, gusts, and direction Wave height, period, and direction Visibility and fog probability Precipitation probability and intensity Air and water temperature
All requests require: Authorization: Bearer $SEALEGS_API_KEY Content-Type: application/json
Standard tier: 60 requests per minute Rate limit headers included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
1 credit per forecast-day (3-day forecast = 3 credits) GET operations are free Refreshes cost 1 credit per forecast-day
SpotCast generates AI-powered marine weather forecasts for specific coordinates.
POST https://api.sealegs.ai/v3/spotcast Creates a new forecast request. Processing is asynchronous (typically 30-60 seconds). Required parameters: latitude (number): -90 to 90 longitude (number): -180 to 180 start_date (string): ISO 8601 format (e.g., "2025-12-05T00:00:00Z") num_days (integer): 1-5 Optional parameters: webhook_url (string): HTTPS endpoint for completion notification metadata (object): Custom key-value pairs for your reference trip_duration_hours (integer): Trip duration in hours preferences.language: en, es, fr, pt, it, ja (default: en) preferences.distance_units: nm, mi, km (default: nm) preferences.speed_units: kts, mph, ms (default: kts) vessel_info.type: powerBoat, sailboat, pwc, yacht, catamaran vessel_info.length_ft: 1-500 Example request: curl -X POST https://api.sealegs.ai/v3/spotcast \ -H "Authorization: Bearer $SEALEGS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "latitude": 25.7617, "longitude": -80.1918, "start_date": "2025-12-05T00:00:00Z", "num_days": 2, "vessel_info": {"type": "sailboat", "length_ft": 35} }' Response (202 Accepted): { "id": "spc_abc123xyz", "forecast_id": "fcst_xyz789", "status": "processing", "created_at": "2025-12-01T10:30:00Z", "estimated_completion_seconds": 45, "credits_charged": 2, "credits_remaining": 98, "links": { "self": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz", "forecast": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecast/fcst_xyz789", "status": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status" } }
GET https://api.sealegs.ai/v3/spotcast/{id}/status Poll this endpoint until status is "completed" or "failed". Recommended poll interval: 10-15 seconds. Status values: pending: Queued for processing (no progress field) processing: Currently generating forecast (includes progress) completed: Ready to retrieve (includes progress at 100%) failed: Error occurred Progress stages (only present when status is processing or completed): fetching_weather processing_data ai_analysis completing completed (100%) Example request: curl https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status \ -H "Authorization: Bearer $SEALEGS_API_KEY" Response (pending): { "id": "spc_abc123xyz", "forecast_id": "fcst_xyz789", "status": "pending", "created_at": "2025-12-01T10:30:00Z" } Response (processing): { "id": "spc_abc123xyz", "forecast_id": "fcst_xyz789", "status": "processing", "created_at": "2025-12-01T10:30:00Z", "progress": { "stage": "ai_analysis", "percentage": 75 } } Response (completed): { "id": "spc_abc123xyz", "forecast_id": "fcst_xyz789", "status": "completed", "created_at": "2025-12-01T10:30:00Z", "completed_at": "2025-12-01T10:30:45Z", "progress": { "stage": "completed", "percentage": 100 } }
GET https://api.sealegs.ai/v3/spotcast/{id} Retrieves the completed forecast with AI analysis. Example request: curl https://api.sealegs.ai/v3/spotcast/spc_abc123xyz \ -H "Authorization: Bearer $SEALEGS_API_KEY" Response (200 OK): { "id": "spc_abc123xyz", "created_at": "2025-12-01T10:30:00Z", "coordinates": { "latitude": 25.7617, "longitude": -80.1918 }, "forecast_period": { "start_date": "2025-12-05T00:00:00Z", "end_date": "2025-12-06T00:00:00Z", "num_days": 2 }, "trip_duration_hours": 12, "forecast_count": 1, "metadata": { "location_name": "Miami Marina" }, "latest_forecast": { "forecast_id": "fcst_xyz789", "status": "completed", "created_at": "2025-12-01T10:30:00Z", "completed_at": "2025-12-01T10:30:45Z", "ai_analysis": { "summary": "Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.", "daily_classifications": [ { "date": "2025-12-05", "classification": "GO", "summary": "Light winds 8-12kt from NE. Seas 1-2ft. Visibility excellent at 10+ nm. No precipitation expected." }, { "date": "2025-12-06", "classification": "CAUTION", "summary": "Winds increasing to 15-20kt. Seas building to 3-4ft by afternoon. Morning departure recommended." } ] } } }
POST https://api.sealegs.ai/v3/spotcast/{id}/refresh Updates an existing forecast with the latest weather data. Costs 1 credit per forecast-day. Optional body: webhook_url (string): Override webhook for this refresh Example request: curl -X POST https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/refresh \ -H "Authorization: Bearer $SEALEGS_API_KEY" Response (202 Accepted): { "id": "spc_abc123xyz", "forecast_id": "fcst_newxyz789", "status": "processing", "created_at": "2025-12-02T08:00:00Z", "links": { "self": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz", "status": "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status" } }
GET https://api.sealegs.ai/v3/spotcast/{id}/forecasts Lists all forecasts for a SpotCast, sorted by creation date (newest first). Each time you create or refresh a SpotCast, a new forecast is generated. Query parameters: limit (integer): Number of results to return (default: 10) Example request: curl "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecasts?limit=5" \ -H "Authorization: Bearer $SEALEGS_API_KEY" Response (200 OK): { "spotcast_id": "spc_abc123xyz", "data": [ { "forecast_id": "fcst_newxyz789", "status": "completed", "created_at": "2025-12-02T08:00:00Z", "completed_at": "2025-12-02T08:00:42Z" }, { "forecast_id": "fcst_xyz789", "status": "completed", "created_at": "2025-12-01T10:30:00Z", "completed_at": "2025-12-01T10:30:45Z" } ], "has_more": false }
GET https://api.sealegs.ai/v3/spotcast/{id}/forecast/{forecast_id} Retrieves a specific forecast with full details including AI analysis. Use this to access any forecast in a SpotCast's history, not just the latest one. Example request: curl "https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecast/fcst_xyz789" \ -H "Authorization: Bearer $SEALEGS_API_KEY" Response (200 OK - Completed): { "forecast_id": "fcst_xyz789", "spotcast_id": "spc_abc123xyz", "status": "completed", "created_at": "2025-12-01T10:30:00Z", "completed_at": "2025-12-01T10:30:45Z", "forecast_period": { "start_date": "2025-12-05T00:00:00Z", "num_days": 2 }, "ai_analysis": { "summary": "Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.", "daily_classifications": [ { "date": "2025-12-05", "classification": "GO", "summary": "Light winds and calm seas throughout the day." }, { "date": "2025-12-06", "classification": "CAUTION", "summary": "Improving conditions with best windows in the afternoon." } ] } } Response (200 OK - Processing): { "forecast_id": "fcst_xyz789", "spotcast_id": "spc_abc123xyz", "status": "processing", "created_at": "2025-12-01T10:30:00Z", "forecast_period": { "start_date": "2025-12-05T00:00:00Z", "num_days": 2 }, "progress": { "stage": "analyzing", "percentage": 65 } } Response (200 OK - Failed): { "forecast_id": "fcst_xyz789", "spotcast_id": "spc_abc123xyz", "status": "failed", "created_at": "2025-12-01T10:30:00Z", "forecast_period": { "start_date": "2025-12-05T00:00:00Z", "num_days": 2 }, "error": "Processing failed" }
GET https://api.sealegs.ai/v3/spotcasts Retrieves all SpotCasts for your account. Query parameters: limit (integer): 1-100 results (default: 20) after (string): Cursor for pagination Example request: curl "https://api.sealegs.ai/v3/spotcasts?limit=10" \ -H "Authorization: Bearer $SEALEGS_API_KEY" Response (200 OK): { "data": [ { "id": "spc_abc123xyz", "created_at": "2025-12-01T10:30:00Z", "coordinates": { "latitude": 25.7617, "longitude": -80.1918 }, "start_date": "2025-12-05T00:00:00-05:00", "end_date": "2025-12-06T23:59:59-05:00", "num_days": 2, "latest_forecast": { "forecast_id": "fcst_xyz789", "status": "completed" } } ], "has_more": true, "next_cursor": "spc_def456" }
GET https://api.sealegs.ai/v3/account/balance Returns your current credit balance and usage. Example request: curl https://api.sealegs.ai/v3/account/balance \ -H "Authorization: Bearer $SEALEGS_API_KEY" Response (200 OK): { "credit_balance": 100, "total_credits_purchased": 200, "total_credits_used": 100, "purchase_url": "https://developers.sealegs.ai/dashboard/billing" }
When you provide a webhook_url during SpotCast creation or refresh, SeaLegs sends a POST request to that URL when processing completes or fails.
Content-Type: application/json X-SeaLegs-Event: spotcast.forecast.completed X-SeaLegs-Signature: sha256=abc123... X-SeaLegs-Delivery-ID: whk_abc123xyz X-SeaLegs-Timestamp: 1733045400 User-Agent: SeaLegs-Webhooks/1.0
Every webhook includes an HMAC-SHA256 signature in the X-SeaLegs-Signature header. Your webhook secret is available in the Developer Dashboard. Always verify the signature before processing the payload. Python: import hmac import hashlib def verify_webhook(payload: bytes, signature: str, secret: str) -> bool: expected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest() return hmac.compare_digest(f"sha256={expected}", signature) JavaScript: const crypto = require('crypto'); function verifyWebhook(payload, signature, secret) { const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex'); return crypto.timingSafeEqual( Buffer.from(`sha256=${expected}`), Buffer.from(signature) ); }
{ "event": "spotcast.forecast.completed", "created_at": "2025-12-01T10:30:45Z", "data": { "spotcast_id": "spc_abc123xyz", "forecast_id": "fcst_xyz789", "status": "completed", "summary": "Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.", "metadata": { "trip_name": "Weekend Fishing Trip" } } } The summary field is included when AI analysis completes successfully. The metadata object is included when you provided metadata in the original POST /v3/spotcast request, echoed back exactly as sent.
{ "event": "spotcast.forecast.failed", "created_at": "2025-12-01T10:31:00Z", "data": { "spotcast_id": "spc_abc123xyz", "forecast_id": "fcst_xyz789", "status": "failed", "error": { "code": "processing_failed", "message": "Unable to fetch weather data for the specified location" }, "metadata": { "trip_name": "Weekend Fishing Trip" } } }
Failed deliveries are retried up to 4 times: after 5 minutes, 30 minutes, 2 hours, and 24 hours.
Each forecast day receives a safety classification: ClassificationMeaningGOSafe conditions for the vessel typeCAUTIONProceed with awareness; conditions may be challengingNO-GOConditions not recommended for the vessel type Classifications are adjusted based on vessel type and size when vessel_info is provided.
Wind: Speed (kts), gusts, direction (degrees) Waves: Height (ft), period (seconds), direction, swell Visibility: Distance (nm), fog probability Precipitation: Probability (%), intensity Temperature: Air and water (F/C)
When vessel_info is provided: PWC/Jet Ski: Stricter wave height limits Sailboats: Wind optimization recommendations Large Yachts: Higher tolerance for wave conditions Small Powerboats: Balanced wind/wave thresholds
{ "error": { "code": "invalid_coordinates", "message": "Latitude must be between -90 and 90", "param": "latitude" } }
CodeMeaningAction200SuccessRequest completed201CreatedResource created202AcceptedAsync processing started400Bad RequestCheck parameter values401UnauthorizedVerify API key is correct402Payment RequiredAdd credits at developer.sealegs.ai403ForbiddenAccount not verified or suspended404Not FoundCheck resource ID429Rate LimitedWait and retry (60 req/min limit)500Server ErrorRetry after brief delay
CodeDescriptionmissing_api_keyNo API key provided in requestinvalid_api_keyAPI key is not recognizedkey_revokedAPI key has been revoked
CodeDescriptionaccount_not_verifiedDeveloper account has not been verifiedaccount_suspendedDeveloper account has been suspended
CodeDescriptioninsufficient_balanceNot enough credits (response includes current_balance, required_credits, purchase_url)
CodeDescriptioninvalid_coordinatesCoordinates out of valid rangeinvalid_date_formatNot ISO 8601 formatinvalid_webhook_urlNot a valid HTTPS URLinvalid_preferencesPreferences format is invalidinvalid_languageLanguage not supported (use: en, es, fr, pt, it, ja)invalid_distance_unitsDistance units not supported (use: nm, mi, km)invalid_speed_unitsSpeed units not supported (use: kts, mph, ms)invalid_jsonRequest body is not valid JSON
CodeDescriptionspotcast_not_foundThe specified SpotCast does not existforecast_not_foundThe specified forecast does not exist
CodeDescriptionrate_limit_exceededToo many requests (response includes retry_after seconds)
CodeDescriptioninternal_errorAn unexpected error occurredcreation_failedFailed to create SpotCastretrieval_failedFailed to retrieve resource
Create a SpotCast with coordinates and dates Poll the status endpoint until "completed" Retrieve the full forecast with AI analysis Present GO/CAUTION/NO-GO classification to user
Create SpotCast with trip coordinates and date Include vessel_info for tailored recommendations Check daily_classifications for each day Review AI summary for specific concerns
Developer Portal API Documentation SeaLegs App
MIT
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.