{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sealegs-marine-forecast",
    "name": "SeaLegs AI Marine Forecast API",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sealegs-ai-coder/sealegs-marine-forecast",
    "canonicalUrl": "https://clawhub.ai/sealegs-ai-coder/sealegs-marine-forecast",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sealegs-marine-forecast",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sealegs-marine-forecast",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "spotcast-workflow.md",
      "spotcast_workflow.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/sealegs-marine-forecast"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/sealegs-marine-forecast",
    "agentPageUrl": "https://openagent3.xyz/skills/sealegs-marine-forecast/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sealegs-marine-forecast/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sealegs-marine-forecast/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SeaLegs AI Marine Forecast API",
        "body": "Get AI-powered marine weather forecasts for any location worldwide. Includes wind, waves, visibility, precipitation analysis with GO/CAUTION/NO-GO safety classifications."
      },
      {
        "title": "Features",
        "body": "SpotCast Forecasts: Get marine weather forecasts for any coordinates worldwide\nAI Safety Analysis: GO / CAUTION / NO-GO classifications for each day\nVessel-Specific: Tailored recommendations based on boat type and size\nMulti-Language: Supports English, Spanish, French, Portuguese, Italian, Japanese"
      },
      {
        "title": "1. Get an API Key",
        "body": "Sign up at https://developer.sealegs.ai — you'll get 10 free credits to get started\nGenerate an API key from your dashboard\nNeed more? Add credits anytime ($10 = 200 forecast-days)"
      },
      {
        "title": "2. Configure OpenClaw",
        "body": "Add to your OpenClaw configuration:\n\n{\n  skills: {\n    entries: {\n      \"sealegs-marine-forecast\": {\n        enabled: true,\n        apiKey: \"sk_live_your_key_here\"\n      }\n    }\n  }\n}\n\nOr set the environment variable:\n\nexport SEALEGS_API_KEY=sk_live_your_key_here"
      },
      {
        "title": "3. Install the Skill",
        "body": "clawhub install sealegs-marine-forecast"
      },
      {
        "title": "Usage Example",
        "body": "// Miami, FL\nPOST /v3/spotcast\n{\n  \"latitude\": 25.7617,\n  \"longitude\": -80.1918,\n  \"start_date\": \"2026-02-10T00:00:00Z\",\n  \"num_days\": 2,\n  \"vessel_info\": {\"type\": \"sailboat\", \"length_ft\": 35}  // optional\n}\n\nSample response:\n\n{\n  \"id\": \"spc_FrZdSAs6T3cxbXiPtNZvxu\",\n  \"coordinates\": {\n    \"latitude\": 25.7617,\n    \"longitude\": -80.1918\n  },\n  \"forecast_period\": {\n    \"start_date\": \"2026-02-10T00:00:00-05:00\",\n    \"end_date\": \"2026-02-11T23:59:59-05:00\",\n    \"num_days\": \"2\"\n  },\n  \"trip_duration_hours\": \"12\",\n  \"metadata\": {\n    \"location_name\": \"Miami Marina\"\n  },\n  \"latest_forecast\": {\n    \"status\": \"completed\",\n    \"ai_analysis\": {\n      \"summary\": \"Ideal conditions both days with light winds\",\n      \"daily_classifications\": [\n        {\n          \"date\": \"2026-02-10\",\n          \"classification\": \"GO\",\n          \"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.\",\n          \"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.\"\n        },\n        {\n          \"date\": \"2026-02-11\",\n          \"classification\": \"GO\",\n          \"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.\",\n          \"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.\"\n        }\n      ]\n    }\n  }\n}"
      },
      {
        "title": "API Endpoints",
        "body": "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"
      },
      {
        "title": "Weather Factors Used",
        "body": "Wind speed, gusts, and direction\nWave height, period, and direction\nVisibility and fog probability\nPrecipitation probability and intensity\nAir and water temperature"
      },
      {
        "title": "Authentication",
        "body": "All requests require:\n\nAuthorization: Bearer $SEALEGS_API_KEY\nContent-Type: application/json"
      },
      {
        "title": "Rate Limits",
        "body": "Standard tier: 60 requests per minute\nRate limit headers included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset"
      },
      {
        "title": "Billing",
        "body": "1 credit per forecast-day (3-day forecast = 3 credits)\nGET operations are free\nRefreshes cost 1 credit per forecast-day"
      },
      {
        "title": "SpotCast Forecasts",
        "body": "SpotCast generates AI-powered marine weather forecasts for specific coordinates."
      },
      {
        "title": "Create SpotCast",
        "body": "POST https://api.sealegs.ai/v3/spotcast\n\nCreates a new forecast request. Processing is asynchronous (typically 30-60 seconds).\n\nRequired parameters:\n\nlatitude (number): -90 to 90\nlongitude (number): -180 to 180\nstart_date (string): ISO 8601 format (e.g., \"2025-12-05T00:00:00Z\")\nnum_days (integer): 1-5\n\nOptional parameters:\n\nwebhook_url (string): HTTPS endpoint for completion notification\nmetadata (object): Custom key-value pairs for your reference\ntrip_duration_hours (integer): Trip duration in hours\npreferences.language: en, es, fr, pt, it, ja (default: en)\npreferences.distance_units: nm, mi, km (default: nm)\npreferences.speed_units: kts, mph, ms (default: kts)\nvessel_info.type: powerBoat, sailboat, pwc, yacht, catamaran\nvessel_info.length_ft: 1-500\n\nExample request:\n\ncurl -X POST https://api.sealegs.ai/v3/spotcast \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"latitude\": 25.7617,\n    \"longitude\": -80.1918,\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"num_days\": 2,\n    \"vessel_info\": {\"type\": \"sailboat\", \"length_ft\": 35}\n  }'\n\nResponse (202 Accepted):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_xyz789\",\n  \"status\": \"processing\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"estimated_completion_seconds\": 45,\n  \"credits_charged\": 2,\n  \"credits_remaining\": 98,\n  \"links\": {\n    \"self\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz\",\n    \"forecast\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecast/fcst_xyz789\",\n    \"status\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status\"\n  }\n}"
      },
      {
        "title": "Check SpotCast Status",
        "body": "GET https://api.sealegs.ai/v3/spotcast/{id}/status\n\nPoll this endpoint until status is \"completed\" or \"failed\". Recommended poll interval: 10-15 seconds.\n\nStatus values:\n\npending: Queued for processing (no progress field)\nprocessing: Currently generating forecast (includes progress)\ncompleted: Ready to retrieve (includes progress at 100%)\nfailed: Error occurred\n\nProgress stages (only present when status is processing or completed):\n\nfetching_weather\nprocessing_data\nai_analysis\ncompleting\ncompleted (100%)\n\nExample request:\n\ncurl https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\nResponse (pending):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_xyz789\",\n  \"status\": \"pending\",\n  \"created_at\": \"2025-12-01T10:30:00Z\"\n}\n\nResponse (processing):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_xyz789\",\n  \"status\": \"processing\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"progress\": {\n    \"stage\": \"ai_analysis\",\n    \"percentage\": 75\n  }\n}\n\nResponse (completed):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_xyz789\",\n  \"status\": \"completed\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"completed_at\": \"2025-12-01T10:30:45Z\",\n  \"progress\": {\n    \"stage\": \"completed\",\n    \"percentage\": 100\n  }\n}"
      },
      {
        "title": "Get SpotCast",
        "body": "GET https://api.sealegs.ai/v3/spotcast/{id}\n\nRetrieves the completed forecast with AI analysis.\n\nExample request:\n\ncurl https://api.sealegs.ai/v3/spotcast/spc_abc123xyz \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\nResponse (200 OK):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"coordinates\": {\n    \"latitude\": 25.7617,\n    \"longitude\": -80.1918\n  },\n  \"forecast_period\": {\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"end_date\": \"2025-12-06T00:00:00Z\",\n    \"num_days\": 2\n  },\n  \"trip_duration_hours\": 12,\n  \"forecast_count\": 1,\n  \"metadata\": {\n    \"location_name\": \"Miami Marina\"\n  },\n  \"latest_forecast\": {\n    \"forecast_id\": \"fcst_xyz789\",\n    \"status\": \"completed\",\n    \"created_at\": \"2025-12-01T10:30:00Z\",\n    \"completed_at\": \"2025-12-01T10:30:45Z\",\n    \"ai_analysis\": {\n      \"summary\": \"Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.\",\n      \"daily_classifications\": [\n        {\n          \"date\": \"2025-12-05\",\n          \"classification\": \"GO\",\n          \"summary\": \"Light winds 8-12kt from NE. Seas 1-2ft. Visibility excellent at 10+ nm. No precipitation expected.\"\n        },\n        {\n          \"date\": \"2025-12-06\",\n          \"classification\": \"CAUTION\",\n          \"summary\": \"Winds increasing to 15-20kt. Seas building to 3-4ft by afternoon. Morning departure recommended.\"\n        }\n      ]\n    }\n  }\n}"
      },
      {
        "title": "Refresh SpotCast",
        "body": "POST https://api.sealegs.ai/v3/spotcast/{id}/refresh\n\nUpdates an existing forecast with the latest weather data. Costs 1 credit per forecast-day.\n\nOptional body:\n\nwebhook_url (string): Override webhook for this refresh\n\nExample request:\n\ncurl -X POST https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/refresh \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\nResponse (202 Accepted):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_newxyz789\",\n  \"status\": \"processing\",\n  \"created_at\": \"2025-12-02T08:00:00Z\",\n  \"links\": {\n    \"self\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz\",\n    \"status\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status\"\n  }\n}"
      },
      {
        "title": "List Forecasts",
        "body": "GET https://api.sealegs.ai/v3/spotcast/{id}/forecasts\n\nLists all forecasts for a SpotCast, sorted by creation date (newest first). Each time you create or refresh a SpotCast, a new forecast is generated.\n\nQuery parameters:\n\nlimit (integer): Number of results to return (default: 10)\n\nExample request:\n\ncurl \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecasts?limit=5\" \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\nResponse (200 OK):\n\n{\n  \"spotcast_id\": \"spc_abc123xyz\",\n  \"data\": [\n    {\n      \"forecast_id\": \"fcst_newxyz789\",\n      \"status\": \"completed\",\n      \"created_at\": \"2025-12-02T08:00:00Z\",\n      \"completed_at\": \"2025-12-02T08:00:42Z\"\n    },\n    {\n      \"forecast_id\": \"fcst_xyz789\",\n      \"status\": \"completed\",\n      \"created_at\": \"2025-12-01T10:30:00Z\",\n      \"completed_at\": \"2025-12-01T10:30:45Z\"\n    }\n  ],\n  \"has_more\": false\n}"
      },
      {
        "title": "Get Forecast",
        "body": "GET https://api.sealegs.ai/v3/spotcast/{id}/forecast/{forecast_id}\n\nRetrieves 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.\n\nExample request:\n\ncurl \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecast/fcst_xyz789\" \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\nResponse (200 OK - Completed):\n\n{\n  \"forecast_id\": \"fcst_xyz789\",\n  \"spotcast_id\": \"spc_abc123xyz\",\n  \"status\": \"completed\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"completed_at\": \"2025-12-01T10:30:45Z\",\n  \"forecast_period\": {\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"num_days\": 2\n  },\n  \"ai_analysis\": {\n    \"summary\": \"Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.\",\n    \"daily_classifications\": [\n      {\n        \"date\": \"2025-12-05\",\n        \"classification\": \"GO\",\n        \"summary\": \"Light winds and calm seas throughout the day.\"\n      },\n      {\n        \"date\": \"2025-12-06\",\n        \"classification\": \"CAUTION\",\n        \"summary\": \"Improving conditions with best windows in the afternoon.\"\n      }\n    ]\n  }\n}\n\nResponse (200 OK - Processing):\n\n{\n  \"forecast_id\": \"fcst_xyz789\",\n  \"spotcast_id\": \"spc_abc123xyz\",\n  \"status\": \"processing\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"forecast_period\": {\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"num_days\": 2\n  },\n  \"progress\": {\n    \"stage\": \"analyzing\",\n    \"percentage\": 65\n  }\n}\n\nResponse (200 OK - Failed):\n\n{\n  \"forecast_id\": \"fcst_xyz789\",\n  \"spotcast_id\": \"spc_abc123xyz\",\n  \"status\": \"failed\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"forecast_period\": {\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"num_days\": 2\n  },\n  \"error\": \"Processing failed\"\n}"
      },
      {
        "title": "List SpotCasts",
        "body": "GET https://api.sealegs.ai/v3/spotcasts\n\nRetrieves all SpotCasts for your account.\n\nQuery parameters:\n\nlimit (integer): 1-100 results (default: 20)\nafter (string): Cursor for pagination\n\nExample request:\n\ncurl \"https://api.sealegs.ai/v3/spotcasts?limit=10\" \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\nResponse (200 OK):\n\n{\n  \"data\": [\n    {\n      \"id\": \"spc_abc123xyz\",\n      \"created_at\": \"2025-12-01T10:30:00Z\",\n      \"coordinates\": {\n        \"latitude\": 25.7617,\n        \"longitude\": -80.1918\n      },\n      \"start_date\": \"2025-12-05T00:00:00-05:00\",\n      \"end_date\": \"2025-12-06T23:59:59-05:00\",\n      \"num_days\": 2,\n      \"latest_forecast\": {\n        \"forecast_id\": \"fcst_xyz789\",\n        \"status\": \"completed\"\n      }\n    }\n  ],\n  \"has_more\": true,\n  \"next_cursor\": \"spc_def456\"\n}"
      },
      {
        "title": "Get Balance",
        "body": "GET https://api.sealegs.ai/v3/account/balance\n\nReturns your current credit balance and usage.\n\nExample request:\n\ncurl https://api.sealegs.ai/v3/account/balance \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\nResponse (200 OK):\n\n{\n  \"credit_balance\": 100,\n  \"total_credits_purchased\": 200,\n  \"total_credits_used\": 100,\n  \"purchase_url\": \"https://developers.sealegs.ai/dashboard/billing\"\n}"
      },
      {
        "title": "Webhooks",
        "body": "When you provide a webhook_url during SpotCast creation or refresh, SeaLegs sends a POST request to that URL when processing completes or fails."
      },
      {
        "title": "Webhook Headers",
        "body": "Content-Type: application/json\nX-SeaLegs-Event: spotcast.forecast.completed\nX-SeaLegs-Signature: sha256=abc123...\nX-SeaLegs-Delivery-ID: whk_abc123xyz\nX-SeaLegs-Timestamp: 1733045400\nUser-Agent: SeaLegs-Webhooks/1.0"
      },
      {
        "title": "Verifying Signatures",
        "body": "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.\n\nPython:\n\nimport hmac\nimport hashlib\n\ndef verify_webhook(payload: bytes, signature: str, secret: str) -> bool:\n    expected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()\n    return hmac.compare_digest(f\"sha256={expected}\", signature)\n\nJavaScript:\n\nconst crypto = require('crypto');\n\nfunction verifyWebhook(payload, signature, secret) {\n  const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex');\n  return crypto.timingSafeEqual(\n    Buffer.from(`sha256=${expected}`),\n    Buffer.from(signature)\n  );\n}"
      },
      {
        "title": "Completed Event",
        "body": "{\n  \"event\": \"spotcast.forecast.completed\",\n  \"created_at\": \"2025-12-01T10:30:45Z\",\n  \"data\": {\n    \"spotcast_id\": \"spc_abc123xyz\",\n    \"forecast_id\": \"fcst_xyz789\",\n    \"status\": \"completed\",\n    \"summary\": \"Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.\",\n    \"metadata\": {\n      \"trip_name\": \"Weekend Fishing Trip\"\n    }\n  }\n}\n\nThe 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."
      },
      {
        "title": "Failed Event",
        "body": "{\n  \"event\": \"spotcast.forecast.failed\",\n  \"created_at\": \"2025-12-01T10:31:00Z\",\n  \"data\": {\n    \"spotcast_id\": \"spc_abc123xyz\",\n    \"forecast_id\": \"fcst_xyz789\",\n    \"status\": \"failed\",\n    \"error\": {\n      \"code\": \"processing_failed\",\n      \"message\": \"Unable to fetch weather data for the specified location\"\n    },\n    \"metadata\": {\n      \"trip_name\": \"Weekend Fishing Trip\"\n    }\n  }\n}"
      },
      {
        "title": "Retry Policy",
        "body": "Failed deliveries are retried up to 4 times: after 5 minutes, 30 minutes, 2 hours, and 24 hours."
      },
      {
        "title": "Daily Classifications",
        "body": "Each forecast day receives a safety classification:\n\nClassificationMeaningGOSafe conditions for the vessel typeCAUTIONProceed with awareness; conditions may be challengingNO-GOConditions not recommended for the vessel type\n\nClassifications are adjusted based on vessel type and size when vessel_info is provided."
      },
      {
        "title": "Weather Variables Analyzed",
        "body": "Wind: Speed (kts), gusts, direction (degrees)\nWaves: Height (ft), period (seconds), direction, swell\nVisibility: Distance (nm), fog probability\nPrecipitation: Probability (%), intensity\nTemperature: Air and water (F/C)"
      },
      {
        "title": "Vessel-Specific Adjustments",
        "body": "When vessel_info is provided:\n\nPWC/Jet Ski: Stricter wave height limits\nSailboats: Wind optimization recommendations\nLarge Yachts: Higher tolerance for wave conditions\nSmall Powerboats: Balanced wind/wave thresholds"
      },
      {
        "title": "Error Response Format",
        "body": "{\n  \"error\": {\n    \"code\": \"invalid_coordinates\",\n    \"message\": \"Latitude must be between -90 and 90\",\n    \"param\": \"latitude\"\n  }\n}"
      },
      {
        "title": "HTTP Status Codes",
        "body": "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"
      },
      {
        "title": "Authentication (401)",
        "body": "CodeDescriptionmissing_api_keyNo API key provided in requestinvalid_api_keyAPI key is not recognizedkey_revokedAPI key has been revoked"
      },
      {
        "title": "Authorization (403)",
        "body": "CodeDescriptionaccount_not_verifiedDeveloper account has not been verifiedaccount_suspendedDeveloper account has been suspended"
      },
      {
        "title": "Payment (402)",
        "body": "CodeDescriptioninsufficient_balanceNot enough credits (response includes current_balance, required_credits, purchase_url)"
      },
      {
        "title": "Validation (400)",
        "body": "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"
      },
      {
        "title": "Not Found (404)",
        "body": "CodeDescriptionspotcast_not_foundThe specified SpotCast does not existforecast_not_foundThe specified forecast does not exist"
      },
      {
        "title": "Rate Limit (429)",
        "body": "CodeDescriptionrate_limit_exceededToo many requests (response includes retry_after seconds)"
      },
      {
        "title": "Server (500)",
        "body": "CodeDescriptioninternal_errorAn unexpected error occurredcreation_failedFailed to create SpotCastretrieval_failedFailed to retrieve resource"
      },
      {
        "title": "Get a Marine Forecast",
        "body": "Create a SpotCast with coordinates and dates\nPoll the status endpoint until \"completed\"\nRetrieve the full forecast with AI analysis\nPresent GO/CAUTION/NO-GO classification to user"
      },
      {
        "title": "Check Conditions Before a Trip",
        "body": "Create SpotCast with trip coordinates and date\nInclude vessel_info for tailored recommendations\nCheck daily_classifications for each day\nReview AI summary for specific concerns"
      },
      {
        "title": "Links",
        "body": "Developer Portal\nAPI Documentation\nSeaLegs App"
      },
      {
        "title": "License",
        "body": "MIT"
      }
    ],
    "body": "SeaLegs AI Marine Forecast API\n\nGet AI-powered marine weather forecasts for any location worldwide. Includes wind, waves, visibility, precipitation analysis with GO/CAUTION/NO-GO safety classifications.\n\nFeatures\nSpotCast Forecasts: Get marine weather forecasts for any coordinates worldwide\nAI Safety Analysis: GO / CAUTION / NO-GO classifications for each day\nVessel-Specific: Tailored recommendations based on boat type and size\nMulti-Language: Supports English, Spanish, French, Portuguese, Italian, Japanese\nSetup\n1. Get an API Key\nSign up at https://developer.sealegs.ai — you'll get 10 free credits to get started\nGenerate an API key from your dashboard\nNeed more? Add credits anytime ($10 = 200 forecast-days)\n2. Configure OpenClaw\n\nAdd to your OpenClaw configuration:\n\n{\n  skills: {\n    entries: {\n      \"sealegs-marine-forecast\": {\n        enabled: true,\n        apiKey: \"sk_live_your_key_here\"\n      }\n    }\n  }\n}\n\n\nOr set the environment variable:\n\nexport SEALEGS_API_KEY=sk_live_your_key_here\n\n3. Install the Skill\nclawhub install sealegs-marine-forecast\n\nUsage Example\n// Miami, FL\nPOST /v3/spotcast\n{\n  \"latitude\": 25.7617,\n  \"longitude\": -80.1918,\n  \"start_date\": \"2026-02-10T00:00:00Z\",\n  \"num_days\": 2,\n  \"vessel_info\": {\"type\": \"sailboat\", \"length_ft\": 35}  // optional\n}\n\n\nSample response:\n\n{\n  \"id\": \"spc_FrZdSAs6T3cxbXiPtNZvxu\",\n  \"coordinates\": {\n    \"latitude\": 25.7617,\n    \"longitude\": -80.1918\n  },\n  \"forecast_period\": {\n    \"start_date\": \"2026-02-10T00:00:00-05:00\",\n    \"end_date\": \"2026-02-11T23:59:59-05:00\",\n    \"num_days\": \"2\"\n  },\n  \"trip_duration_hours\": \"12\",\n  \"metadata\": {\n    \"location_name\": \"Miami Marina\"\n  },\n  \"latest_forecast\": {\n    \"status\": \"completed\",\n    \"ai_analysis\": {\n      \"summary\": \"Ideal conditions both days with light winds\",\n      \"daily_classifications\": [\n        {\n          \"date\": \"2026-02-10\",\n          \"classification\": \"GO\",\n          \"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.\",\n          \"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.\"\n        },\n        {\n          \"date\": \"2026-02-11\",\n          \"classification\": \"GO\",\n          \"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.\",\n          \"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.\"\n        }\n      ]\n    }\n  }\n}\n\nAPI Endpoints\nOperation\tEndpoint\tCost\nCreate forecast\tPOST /v3/spotcast\t1 credit/day\nGet forecast\tGET /v3/spotcast/{id}\tFree\nCheck status\tGET /v3/spotcast/{id}/status\tFree\nRefresh forecast\tPOST /v3/spotcast/{id}/refresh\t1 credit/day\nList forecasts for SpotCast\tGET /v3/spotcast/{id}/forecasts\tFree\nGet specific forecast\tGET /v3/spotcast/{id}/forecast/{forecast_id}\tFree\nList SpotCasts\tGET /v3/spotcasts\tFree\nGet balance\tGET /v3/account/balance\tFree\nWeather Factors Used\nWind speed, gusts, and direction\nWave height, period, and direction\nVisibility and fog probability\nPrecipitation probability and intensity\nAir and water temperature\nAuthentication\n\nAll requests require:\n\nAuthorization: Bearer $SEALEGS_API_KEY\nContent-Type: application/json\n\nRate Limits\nStandard tier: 60 requests per minute\nRate limit headers included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset\nBilling\n1 credit per forecast-day (3-day forecast = 3 credits)\nGET operations are free\nRefreshes cost 1 credit per forecast-day\nSpotCast Forecasts\n\nSpotCast generates AI-powered marine weather forecasts for specific coordinates.\n\nCreate SpotCast\n\nPOST https://api.sealegs.ai/v3/spotcast\n\nCreates a new forecast request. Processing is asynchronous (typically 30-60 seconds).\n\nRequired parameters:\n\nlatitude (number): -90 to 90\nlongitude (number): -180 to 180\nstart_date (string): ISO 8601 format (e.g., \"2025-12-05T00:00:00Z\")\nnum_days (integer): 1-5\n\nOptional parameters:\n\nwebhook_url (string): HTTPS endpoint for completion notification\nmetadata (object): Custom key-value pairs for your reference\ntrip_duration_hours (integer): Trip duration in hours\npreferences.language: en, es, fr, pt, it, ja (default: en)\npreferences.distance_units: nm, mi, km (default: nm)\npreferences.speed_units: kts, mph, ms (default: kts)\nvessel_info.type: powerBoat, sailboat, pwc, yacht, catamaran\nvessel_info.length_ft: 1-500\n\nExample request:\n\ncurl -X POST https://api.sealegs.ai/v3/spotcast \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"latitude\": 25.7617,\n    \"longitude\": -80.1918,\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"num_days\": 2,\n    \"vessel_info\": {\"type\": \"sailboat\", \"length_ft\": 35}\n  }'\n\n\nResponse (202 Accepted):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_xyz789\",\n  \"status\": \"processing\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"estimated_completion_seconds\": 45,\n  \"credits_charged\": 2,\n  \"credits_remaining\": 98,\n  \"links\": {\n    \"self\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz\",\n    \"forecast\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecast/fcst_xyz789\",\n    \"status\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status\"\n  }\n}\n\nCheck SpotCast Status\n\nGET https://api.sealegs.ai/v3/spotcast/{id}/status\n\nPoll this endpoint until status is \"completed\" or \"failed\". Recommended poll interval: 10-15 seconds.\n\nStatus values:\n\npending: Queued for processing (no progress field)\nprocessing: Currently generating forecast (includes progress)\ncompleted: Ready to retrieve (includes progress at 100%)\nfailed: Error occurred\n\nProgress stages (only present when status is processing or completed):\n\nfetching_weather\nprocessing_data\nai_analysis\ncompleting\ncompleted (100%)\n\nExample request:\n\ncurl https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\n\nResponse (pending):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_xyz789\",\n  \"status\": \"pending\",\n  \"created_at\": \"2025-12-01T10:30:00Z\"\n}\n\n\nResponse (processing):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_xyz789\",\n  \"status\": \"processing\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"progress\": {\n    \"stage\": \"ai_analysis\",\n    \"percentage\": 75\n  }\n}\n\n\nResponse (completed):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_xyz789\",\n  \"status\": \"completed\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"completed_at\": \"2025-12-01T10:30:45Z\",\n  \"progress\": {\n    \"stage\": \"completed\",\n    \"percentage\": 100\n  }\n}\n\nGet SpotCast\n\nGET https://api.sealegs.ai/v3/spotcast/{id}\n\nRetrieves the completed forecast with AI analysis.\n\nExample request:\n\ncurl https://api.sealegs.ai/v3/spotcast/spc_abc123xyz \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\n\nResponse (200 OK):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"coordinates\": {\n    \"latitude\": 25.7617,\n    \"longitude\": -80.1918\n  },\n  \"forecast_period\": {\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"end_date\": \"2025-12-06T00:00:00Z\",\n    \"num_days\": 2\n  },\n  \"trip_duration_hours\": 12,\n  \"forecast_count\": 1,\n  \"metadata\": {\n    \"location_name\": \"Miami Marina\"\n  },\n  \"latest_forecast\": {\n    \"forecast_id\": \"fcst_xyz789\",\n    \"status\": \"completed\",\n    \"created_at\": \"2025-12-01T10:30:00Z\",\n    \"completed_at\": \"2025-12-01T10:30:45Z\",\n    \"ai_analysis\": {\n      \"summary\": \"Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.\",\n      \"daily_classifications\": [\n        {\n          \"date\": \"2025-12-05\",\n          \"classification\": \"GO\",\n          \"summary\": \"Light winds 8-12kt from NE. Seas 1-2ft. Visibility excellent at 10+ nm. No precipitation expected.\"\n        },\n        {\n          \"date\": \"2025-12-06\",\n          \"classification\": \"CAUTION\",\n          \"summary\": \"Winds increasing to 15-20kt. Seas building to 3-4ft by afternoon. Morning departure recommended.\"\n        }\n      ]\n    }\n  }\n}\n\nRefresh SpotCast\n\nPOST https://api.sealegs.ai/v3/spotcast/{id}/refresh\n\nUpdates an existing forecast with the latest weather data. Costs 1 credit per forecast-day.\n\nOptional body:\n\nwebhook_url (string): Override webhook for this refresh\n\nExample request:\n\ncurl -X POST https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/refresh \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\n\nResponse (202 Accepted):\n\n{\n  \"id\": \"spc_abc123xyz\",\n  \"forecast_id\": \"fcst_newxyz789\",\n  \"status\": \"processing\",\n  \"created_at\": \"2025-12-02T08:00:00Z\",\n  \"links\": {\n    \"self\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz\",\n    \"status\": \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/status\"\n  }\n}\n\nList Forecasts\n\nGET https://api.sealegs.ai/v3/spotcast/{id}/forecasts\n\nLists all forecasts for a SpotCast, sorted by creation date (newest first). Each time you create or refresh a SpotCast, a new forecast is generated.\n\nQuery parameters:\n\nlimit (integer): Number of results to return (default: 10)\n\nExample request:\n\ncurl \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecasts?limit=5\" \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\n\nResponse (200 OK):\n\n{\n  \"spotcast_id\": \"spc_abc123xyz\",\n  \"data\": [\n    {\n      \"forecast_id\": \"fcst_newxyz789\",\n      \"status\": \"completed\",\n      \"created_at\": \"2025-12-02T08:00:00Z\",\n      \"completed_at\": \"2025-12-02T08:00:42Z\"\n    },\n    {\n      \"forecast_id\": \"fcst_xyz789\",\n      \"status\": \"completed\",\n      \"created_at\": \"2025-12-01T10:30:00Z\",\n      \"completed_at\": \"2025-12-01T10:30:45Z\"\n    }\n  ],\n  \"has_more\": false\n}\n\nGet Forecast\n\nGET https://api.sealegs.ai/v3/spotcast/{id}/forecast/{forecast_id}\n\nRetrieves 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.\n\nExample request:\n\ncurl \"https://api.sealegs.ai/v3/spotcast/spc_abc123xyz/forecast/fcst_xyz789\" \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\n\nResponse (200 OK - Completed):\n\n{\n  \"forecast_id\": \"fcst_xyz789\",\n  \"spotcast_id\": \"spc_abc123xyz\",\n  \"status\": \"completed\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"completed_at\": \"2025-12-01T10:30:45Z\",\n  \"forecast_period\": {\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"num_days\": 2\n  },\n  \"ai_analysis\": {\n    \"summary\": \"Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.\",\n    \"daily_classifications\": [\n      {\n        \"date\": \"2025-12-05\",\n        \"classification\": \"GO\",\n        \"summary\": \"Light winds and calm seas throughout the day.\"\n      },\n      {\n        \"date\": \"2025-12-06\",\n        \"classification\": \"CAUTION\",\n        \"summary\": \"Improving conditions with best windows in the afternoon.\"\n      }\n    ]\n  }\n}\n\n\nResponse (200 OK - Processing):\n\n{\n  \"forecast_id\": \"fcst_xyz789\",\n  \"spotcast_id\": \"spc_abc123xyz\",\n  \"status\": \"processing\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"forecast_period\": {\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"num_days\": 2\n  },\n  \"progress\": {\n    \"stage\": \"analyzing\",\n    \"percentage\": 65\n  }\n}\n\n\nResponse (200 OK - Failed):\n\n{\n  \"forecast_id\": \"fcst_xyz789\",\n  \"spotcast_id\": \"spc_abc123xyz\",\n  \"status\": \"failed\",\n  \"created_at\": \"2025-12-01T10:30:00Z\",\n  \"forecast_period\": {\n    \"start_date\": \"2025-12-05T00:00:00Z\",\n    \"num_days\": 2\n  },\n  \"error\": \"Processing failed\"\n}\n\nList SpotCasts\n\nGET https://api.sealegs.ai/v3/spotcasts\n\nRetrieves all SpotCasts for your account.\n\nQuery parameters:\n\nlimit (integer): 1-100 results (default: 20)\nafter (string): Cursor for pagination\n\nExample request:\n\ncurl \"https://api.sealegs.ai/v3/spotcasts?limit=10\" \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\n\nResponse (200 OK):\n\n{\n  \"data\": [\n    {\n      \"id\": \"spc_abc123xyz\",\n      \"created_at\": \"2025-12-01T10:30:00Z\",\n      \"coordinates\": {\n        \"latitude\": 25.7617,\n        \"longitude\": -80.1918\n      },\n      \"start_date\": \"2025-12-05T00:00:00-05:00\",\n      \"end_date\": \"2025-12-06T23:59:59-05:00\",\n      \"num_days\": 2,\n      \"latest_forecast\": {\n        \"forecast_id\": \"fcst_xyz789\",\n        \"status\": \"completed\"\n      }\n    }\n  ],\n  \"has_more\": true,\n  \"next_cursor\": \"spc_def456\"\n}\n\nAccount\nGet Balance\n\nGET https://api.sealegs.ai/v3/account/balance\n\nReturns your current credit balance and usage.\n\nExample request:\n\ncurl https://api.sealegs.ai/v3/account/balance \\\n  -H \"Authorization: Bearer $SEALEGS_API_KEY\"\n\n\nResponse (200 OK):\n\n{\n  \"credit_balance\": 100,\n  \"total_credits_purchased\": 200,\n  \"total_credits_used\": 100,\n  \"purchase_url\": \"https://developers.sealegs.ai/dashboard/billing\"\n}\n\nWebhooks\n\nWhen you provide a webhook_url during SpotCast creation or refresh, SeaLegs sends a POST request to that URL when processing completes or fails.\n\nWebhook Headers\nContent-Type: application/json\nX-SeaLegs-Event: spotcast.forecast.completed\nX-SeaLegs-Signature: sha256=abc123...\nX-SeaLegs-Delivery-ID: whk_abc123xyz\nX-SeaLegs-Timestamp: 1733045400\nUser-Agent: SeaLegs-Webhooks/1.0\n\nVerifying Signatures\n\nEvery 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.\n\nPython:\n\nimport hmac\nimport hashlib\n\ndef verify_webhook(payload: bytes, signature: str, secret: str) -> bool:\n    expected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()\n    return hmac.compare_digest(f\"sha256={expected}\", signature)\n\n\nJavaScript:\n\nconst crypto = require('crypto');\n\nfunction verifyWebhook(payload, signature, secret) {\n  const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex');\n  return crypto.timingSafeEqual(\n    Buffer.from(`sha256=${expected}`),\n    Buffer.from(signature)\n  );\n}\n\nCompleted Event\n{\n  \"event\": \"spotcast.forecast.completed\",\n  \"created_at\": \"2025-12-01T10:30:45Z\",\n  \"data\": {\n    \"spotcast_id\": \"spc_abc123xyz\",\n    \"forecast_id\": \"fcst_xyz789\",\n    \"status\": \"completed\",\n    \"summary\": \"Excellent conditions expected. Light winds 8-12kt from the NE with calm 1-2ft seas.\",\n    \"metadata\": {\n      \"trip_name\": \"Weekend Fishing Trip\"\n    }\n  }\n}\n\n\nThe 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.\n\nFailed Event\n{\n  \"event\": \"spotcast.forecast.failed\",\n  \"created_at\": \"2025-12-01T10:31:00Z\",\n  \"data\": {\n    \"spotcast_id\": \"spc_abc123xyz\",\n    \"forecast_id\": \"fcst_xyz789\",\n    \"status\": \"failed\",\n    \"error\": {\n      \"code\": \"processing_failed\",\n      \"message\": \"Unable to fetch weather data for the specified location\"\n    },\n    \"metadata\": {\n      \"trip_name\": \"Weekend Fishing Trip\"\n    }\n  }\n}\n\nRetry Policy\n\nFailed deliveries are retried up to 4 times: after 5 minutes, 30 minutes, 2 hours, and 24 hours.\n\nUnderstanding Results\nDaily Classifications\n\nEach forecast day receives a safety classification:\n\nClassification\tMeaning\nGO\tSafe conditions for the vessel type\nCAUTION\tProceed with awareness; conditions may be challenging\nNO-GO\tConditions not recommended for the vessel type\n\nClassifications are adjusted based on vessel type and size when vessel_info is provided.\n\nWeather Variables Analyzed\nWind: Speed (kts), gusts, direction (degrees)\nWaves: Height (ft), period (seconds), direction, swell\nVisibility: Distance (nm), fog probability\nPrecipitation: Probability (%), intensity\nTemperature: Air and water (F/C)\nVessel-Specific Adjustments\n\nWhen vessel_info is provided:\n\nPWC/Jet Ski: Stricter wave height limits\nSailboats: Wind optimization recommendations\nLarge Yachts: Higher tolerance for wave conditions\nSmall Powerboats: Balanced wind/wave thresholds\nError Handling\nError Response Format\n{\n  \"error\": {\n    \"code\": \"invalid_coordinates\",\n    \"message\": \"Latitude must be between -90 and 90\",\n    \"param\": \"latitude\"\n  }\n}\n\nHTTP Status Codes\nCode\tMeaning\tAction\n200\tSuccess\tRequest completed\n201\tCreated\tResource created\n202\tAccepted\tAsync processing started\n400\tBad Request\tCheck parameter values\n401\tUnauthorized\tVerify API key is correct\n402\tPayment Required\tAdd credits at developer.sealegs.ai\n403\tForbidden\tAccount not verified or suspended\n404\tNot Found\tCheck resource ID\n429\tRate Limited\tWait and retry (60 req/min limit)\n500\tServer Error\tRetry after brief delay\nError Codes\nAuthentication (401)\nCode\tDescription\nmissing_api_key\tNo API key provided in request\ninvalid_api_key\tAPI key is not recognized\nkey_revoked\tAPI key has been revoked\nAuthorization (403)\nCode\tDescription\naccount_not_verified\tDeveloper account has not been verified\naccount_suspended\tDeveloper account has been suspended\nPayment (402)\nCode\tDescription\ninsufficient_balance\tNot enough credits (response includes current_balance, required_credits, purchase_url)\nValidation (400)\nCode\tDescription\ninvalid_coordinates\tCoordinates out of valid range\ninvalid_date_format\tNot ISO 8601 format\ninvalid_webhook_url\tNot a valid HTTPS URL\ninvalid_preferences\tPreferences format is invalid\ninvalid_language\tLanguage not supported (use: en, es, fr, pt, it, ja)\ninvalid_distance_units\tDistance units not supported (use: nm, mi, km)\ninvalid_speed_units\tSpeed units not supported (use: kts, mph, ms)\ninvalid_json\tRequest body is not valid JSON\nNot Found (404)\nCode\tDescription\nspotcast_not_found\tThe specified SpotCast does not exist\nforecast_not_found\tThe specified forecast does not exist\nRate Limit (429)\nCode\tDescription\nrate_limit_exceeded\tToo many requests (response includes retry_after seconds)\nServer (500)\nCode\tDescription\ninternal_error\tAn unexpected error occurred\ncreation_failed\tFailed to create SpotCast\nretrieval_failed\tFailed to retrieve resource\nCommon Workflows\nGet a Marine Forecast\nCreate a SpotCast with coordinates and dates\nPoll the status endpoint until \"completed\"\nRetrieve the full forecast with AI analysis\nPresent GO/CAUTION/NO-GO classification to user\nCheck Conditions Before a Trip\nCreate SpotCast with trip coordinates and date\nInclude vessel_info for tailored recommendations\nCheck daily_classifications for each day\nReview AI summary for specific concerns\nLinks\nDeveloper Portal\nAPI Documentation\nSeaLegs App\nLicense\n\nMIT"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sealegs-ai-coder/sealegs-marine-forecast",
    "publisherUrl": "https://clawhub.ai/sealegs-ai-coder/sealegs-marine-forecast",
    "owner": "sealegs-ai-coder",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sealegs-marine-forecast",
    "downloadUrl": "https://openagent3.xyz/downloads/sealegs-marine-forecast",
    "agentUrl": "https://openagent3.xyz/skills/sealegs-marine-forecast/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sealegs-marine-forecast/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sealegs-marine-forecast/agent.md"
  }
}