{
  "data": {
    "tool": {
      "category": "weather",
      "endpoint": "https://mcp.nausika.app",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/nausika-mcp.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/nausika-mcp.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/nausika-mcp.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 17337,
          "counts": {
            "error": 0,
            "note": 0,
            "warn": 3
          },
          "findings": [
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "nausika_marine_forecast",
              "message": "the definition is about 2,114 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "nausika_search_places",
              "message": "the definition is about 2,112 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC23",
              "severity": "warn",
              "message": "19 tools, about 17,162 tokens of definitions",
              "fix": "Split the server by job, or offer a smaller default toolset (a read-only set, or a search-then-call pattern)."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:21:11Z",
        "count": 19,
        "schemaTokens": 17337,
        "status": "ok",
        "tools": [
          {
            "name": "nausika_marine_forecast",
            "title": "Marine + Atmospheric Forecast",
            "description": "Marine + atmospheric forecast at (latitude, longitude in decimal degrees). Returns waves, swell, currents, SST, wind, gusts, pressure, weather_code, visibility, precipitation, temperature, UV. Directions FROM.\n\nPresets: now, today, tactical (default 3d), planning (8d), extended (14d), none. Windows: start_hour/end_hour, start_date/end_date, forecast_hours, forecast_days. Extra via variables[]. Covers only a rolling window near today (~16 days ahead for atmospheric data, ~8 days for marine/wave data) — for dates further out, use nausika_seasonal_forecast (1-7 month outlook) instead.\n\nPass include_percentiles=true to also fetch the ECMWF IFS-ENS 50-member ensemble and expose \u003cvar\u003e_p10/_p50/_p90 series for atmospheric variables (precipitation, wind, gusts, pressure, temperature, etc.) alongside the deterministic forecast. Use it when forecast uncertainty matters — convective setups, planning/extended horizons, or any time the deterministic precip total looks inconsistent with the precipitation_probability. Waves/swell/currents/SST remain deterministic (no public ensemble). Default false to keep payload small.\n\nExample: latitude=41.39, longitude=9.16, preset=\"today\". Chain nausika_geocode for place→coords.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "end_date": {
                  "description": "Window end date YYYY-MM-DD. Used with start_date. Defaults to preset. Same ~16-day (forecast) / ~8-day (marine) window limit as start_date — use nausika_seasonal_forecast beyond that.",
                  "examples": [
                    "2026-06-22"
                  ],
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string"
                },
                "end_hour": {
                  "description": "Window end ISO YYYY-MM-DDThh:mm. Used with start_hour. Defaults to preset.",
                  "examples": [
                    "2026-06-15T18:00",
                    "2026-06-15T23:00"
                  ],
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
                  "type": "string"
                },
                "forecast_days": {
                  "description": "Override preset days (1-16). Forecast endpoint caps at 16, Marine at 8. Defaults to preset.",
                  "examples": [
                    3,
                    7
                  ],
                  "maximum": 16,
                  "minimum": 1,
                  "type": "integer"
                },
                "forecast_hours": {
                  "description": "Override with an hourly window. Wins over forecast_days. Defaults to preset.",
                  "examples": [
                    12,
                    24
                  ],
                  "maximum": 9007199254740991,
                  "minimum": 1,
                  "type": "integer"
                },
                "include_percentiles": {
                  "default": false,
                  "description": "When true, ALSO fetch the Open-Meteo ECMWF IFS-ENS ensemble (50 perturbed members) and expose `\u003cvar\u003e_p10/_p50/_p90` percentile series alongside the deterministic forecast for atmospheric variables (precipitation, wind, gusts, pressure, temperature, etc.). Reveals forecast uncertainty — useful at planning/extended horizons or for convective setups where the deterministic run can disagree wildly with the ensemble median. Waves/swell/currents/SST stay deterministic (no public ensemble). Adds one extra HTTP call (~200ms latency) and grows the hourly payload ~4×. Default false.",
                  "type": "boolean"
                },
                "latitude": {
                  "description": "Latitude in decimal degrees (WGS84, -90 to 90)",
                  "examples": [
                    38.7,
                    43.55,
                    41.39
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "longitude": {
                  "description": "Longitude in decimal degrees (WGS84, -180 to 180)",
                  "examples": [
                    9.14,
                    10.32,
                    2.17
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                "preset": {
                  "default": "tactical",
                  "description": "High-level mode. now=current snapshot, today=24h hourly+daily, tactical=3d hourly_3+daily (default), planning=8d daily, extended=14d daily, none=3d hourly_3+daily but with NO core variables (caller supplies full variables list).",
                  "enum": [
                    "now",
                    "today",
                    "tactical",
                    "planning",
                    "extended",
                    "none"
                  ],
                  "type": "string"
                },
                "start_date": {
                  "description": "Window start date YYYY-MM-DD. Used with end_date. Wins over forecast_hours/forecast_days. Defaults to preset. Must fall within the rolling forecast window (~16 days ahead for atmospheric data, ~8 days for marine/wave data) — for dates further out, use nausika_seasonal_forecast instead.",
                  "examples": [
                    "2026-06-15"
                  ],
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string"
                },
                "start_hour": {
                  "description": "Window start ISO YYYY-MM-DDThh:mm. Used with end_hour. Most specific override (wins over date and hour-count windows). Defaults to preset.",
                  "examples": [
                    "2026-06-15T06:00",
                    "2026-06-15T12:00"
                  ],
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
                  "type": "string"
                },
                "temporal_resolution": {
                  "description": "Override hourly granularity. hourly_1=every hour, hourly_3=every 3h, hourly_6=every 6h. Defaults to the preset's resolution.",
                  "enum": [
                    "hourly_1",
                    "hourly_3",
                    "hourly_6"
                  ],
                  "type": "string"
                },
                "variables": {
                  "description": "Extra variables added to the preset core (additive). Each is routed to its endpoint automatically. Required (non-empty) when preset='none'. Examples: swell_wave_height/swell_wave_direction/swell_wave_period for swell breakdown, ocean_current_velocity/ocean_current_direction (FROM-corrected) for currents, cape for thunderstorm risk, uv_index_max for UV.",
                  "examples": [
                    [
                      "wave_height",
                      "wind_speed_10m"
                    ],
                    [
                      "swell_wave_height",
                      "uv_index_max"
                    ]
                  ],
                  "items": {
                    "enum": [
                      "wave_height",
                      "wave_direction",
                      "wave_period",
                      "wind_wave_height",
                      "wind_wave_direction",
                      "wind_wave_period",
                      "wind_wave_peak_period",
                      "swell_wave_height",
                      "swell_wave_direction",
                      "swell_wave_period",
                      "swell_wave_peak_period",
                      "secondary_swell_wave_height",
                      "secondary_swell_wave_direction",
                      "secondary_swell_wave_period",
                      "tertiary_swell_wave_height",
                      "tertiary_swell_wave_direction",
                      "tertiary_swell_wave_period",
                      "ocean_current_velocity",
                      "ocean_current_direction",
                      "sea_surface_temperature",
                      "sea_level_height_msl",
                      "invert_barometer_height",
                      "wind_speed_10m",
                      "wind_direction_10m",
                      "wind_gusts_10m",
                      "pressure_msl",
                      "surface_pressure",
                      "weather_code",
                      "visibility",
                      "cloud_cover",
                      "cloud_cover_low",
                      "cloud_cover_mid",
                      "cloud_cover_high",
                      "precipitation",
                      "precipitation_probability",
                      "rain",
                      "showers",
                      "temperature_2m",
                      "apparent_temperature",
                      "relative_humidity_2m",
                      "dew_point_2m",
                      "cape",
                      "is_day",
                      "shortwave_radiation",
                      "sunrise",
                      "sunset",
                      "daylight_duration",
                      "sunshine_duration",
                      "uv_index_max",
                      "uv_index_clear_sky_max"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "latitude",
                "longitude"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "_attribution": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "license": {
                        "type": "string"
                      },
                      "license_url": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "text",
                      "license",
                      "source_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "_disclaimer": {
                  "type": "string"
                },
                "coordinates_requested": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "current": {
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "propertyNames": {
                    "type": "string"
                  },
                  "type": "object"
                },
                "daily": {
                  "additionalProperties": {
                    "items": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "properties": {
                    "time": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "time"
                  ],
                  "type": "object"
                },
                "forecast_resolved": {
                  "anyOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "distance_km": {
                          "type": "number"
                        },
                        "latitude": {
                          "type": "number"
                        },
                        "longitude": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "latitude",
                        "longitude",
                        "distance_km"
                      ],
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "forecast_unavailable_reason": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "hourly": {
                  "additionalProperties": {
                    "items": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "properties": {
                    "time": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "time"
                  ],
                  "type": "object"
                },
                "marine_resolved": {
                  "anyOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "distance_km": {
                          "type": "number"
                        },
                        "latitude": {
                          "type": "number"
                        },
                        "longitude": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "latitude",
                        "longitude",
                        "distance_km"
                      ],
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "marine_unavailable_reason": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "preset": {
                  "enum": [
                    "now",
                    "today",
                    "tactical",
                    "planning",
                    "extended",
                    "none"
                  ],
                  "type": "string"
                },
                "timezone": {
                  "type": "string"
                },
                "units": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "propertyNames": {
                    "type": "string"
                  },
                  "type": "object"
                }
              },
              "required": [
                "preset",
                "timezone",
                "coordinates_requested",
                "marine_resolved",
                "forecast_resolved",
                "marine_unavailable_reason",
                "forecast_unavailable_reason",
                "units"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_seasonal_forecast",
            "title": "Seasonal Forecast",
            "description": "Fetch 1-7 month ECMWF SEAS5 seasonal forecast for one Mediterranean point. Returns ensemble-mean DAILY + MONTHLY aggregates of wind, SST, temperature, precipitation, cloud cover (extend via variables[]). NO waves — chain nausika_marine_forecast for short-term wind + waves.\n\nInputs: latitude, longitude, start_date, end_date, variables.\nExample: latitude=40.12, longitude=9.01, start_date=\"2026-08-01\", end_date=\"2026-08-31\". SEAS5 forecasts forward only: a start_date in the past is clamped to today and an end_date beyond today+210d is clamped to the horizon, both reported in the response. A window that ends in the past is rejected.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "end_date": {
                  "description": "Window end date (UTC, ISO YYYY-MM-DD). Must be ≥ start_date. Dates beyond the SEAS5 horizon (today + 210 days) are clamped — the response reports the adjustment.",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string"
                },
                "include_members": {
                  "default": false,
                  "description": "When true, expose all 50 ECMWF SEAS5 ensemble members (`\u003cvar\u003e_memberNN`) in the response. Default (false) collapses them into `_p10/_p50/_p90` percentile series alongside the ensemble mean — ~20× smaller payload, same statistical signal.",
                  "type": "boolean"
                },
                "latitude": {
                  "description": "Latitude in decimal degrees (WGS84, -90 to 90)",
                  "examples": [
                    38.7,
                    43.55,
                    41.39
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "longitude": {
                  "description": "Longitude in decimal degrees (WGS84, -180 to 180)",
                  "examples": [
                    9.14,
                    10.32,
                    2.17
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                "start_date": {
                  "description": "Window start date (UTC, ISO YYYY-MM-DD). Dates before today are clamped to today (SEAS5 forecasts forward only) — the response reports the adjustment.",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string"
                },
                "variables": {
                  "description": "Additional variables, additive to the core set (wind_speed_10m, wind_direction_10m, sea_surface_temperature, temperature_2m, precipitation, cloud_cover). Each is expanded server-side into the appropriate daily and monthly aggregates. Defaults to core variables only.",
                  "examples": [
                    [
                      "sunshine_duration",
                      "pressure_msl"
                    ],
                    [
                      "apparent_temperature",
                      "relative_humidity_2m"
                    ]
                  ],
                  "items": {
                    "enum": [
                      "wind_speed_10m",
                      "wind_direction_10m",
                      "sea_surface_temperature",
                      "temperature_2m",
                      "precipitation",
                      "cloud_cover",
                      "pressure_msl",
                      "surface_pressure",
                      "sunshine_duration",
                      "shortwave_radiation",
                      "apparent_temperature",
                      "dew_point_2m",
                      "relative_humidity_2m",
                      "weather_code",
                      "sunrise_sunset",
                      "snowfall",
                      "snow_depth"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "latitude",
                "longitude",
                "start_date",
                "end_date"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "_attribution": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "license": {
                        "type": "string"
                      },
                      "license_url": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "text",
                      "license",
                      "source_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "_disclaimer": {
                  "type": "string"
                },
                "coordinates_requested": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "coordinates_resolved": {
                  "additionalProperties": false,
                  "properties": {
                    "distance_km": {
                      "type": "number"
                    },
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude",
                    "distance_km"
                  ],
                  "type": "object"
                },
                "daily": {
                  "additionalProperties": {
                    "items": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "properties": {
                    "time": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "time"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "seas5"
                  ],
                  "type": "string"
                },
                "monthly": {
                  "additionalProperties": {
                    "items": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "properties": {
                    "time": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "time"
                  ],
                  "type": "object"
                },
                "monthly_derived": {
                  "type": "boolean"
                },
                "range": {
                  "additionalProperties": false,
                  "properties": {
                    "end_date": {
                      "type": "string"
                    },
                    "start_date": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "start_date",
                    "end_date"
                  ],
                  "type": "object"
                },
                "timezone": {
                  "enum": [
                    "UTC"
                  ],
                  "type": "string"
                },
                "units": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "propertyNames": {
                    "type": "string"
                  },
                  "type": "object"
                },
                "window_adjusted": {
                  "type": "string"
                }
              },
              "required": [
                "coordinates_requested",
                "coordinates_resolved",
                "range",
                "model",
                "timezone",
                "daily",
                "monthly",
                "units"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_tides",
            "title": "Tides",
            "description": "Tide predictions or station discovery at a coordinate (latitude, longitude). Default: predictions from the nearest NOAA station; outside US waters falls back to a global modeled-tide source (forecast horizon ~15 days — longer windows are truncated, not rejected). Set stations_only=true to discover stations (capped by limit). Tune the window with begin_date (YYYYMMDD) + range_hours, the reference with datum, and output units (metric/english).\n\nThe modeled path reports range_m (peak-to-trough). Across most of the Mediterranean this is under 0.3 m, i.e. negligible for recreational navigation — the response says so explicitly, and you should not present such values as an actionable tide window. Tides matter on the Atlantic coasts, in the Gulf of Gabès, the northern Adriatic, and in the tidal streams of the Messina and Gibraltar straits.\n\nExample: latitude=37.77, longitude=-122.42. Chain nausika_geocode for place→coordinates; pair with nausika_marine_forecast.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "begin_date": {
                  "description": "Start date in YYYYMMDD format (defaults to today UTC).",
                  "examples": [
                    "20260615",
                    "20260701"
                  ],
                  "pattern": "^\\d{8}$",
                  "type": "string"
                },
                "datum": {
                  "default": "MLLW",
                  "description": "Tidal datum reference (default MLLW)",
                  "enum": [
                    "MLLW",
                    "MLW",
                    "MSL",
                    "MHW",
                    "MHHW",
                    "NAVD",
                    "STND"
                  ],
                  "type": "string"
                },
                "interval": {
                  "default": "hilo",
                  "description": "Interval: 'hilo' for high/low only (default), 'h' for hourly predictions",
                  "enum": [
                    "h",
                    "hilo"
                  ],
                  "type": "string"
                },
                "latitude": {
                  "description": "Latitude in decimal degrees (WGS84, -90 to 90)",
                  "examples": [
                    38.7,
                    43.55,
                    41.39
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "limit": {
                  "default": 5,
                  "description": "Max stations to return in stations_only mode (default 5, max 10).",
                  "examples": [
                    5,
                    10
                  ],
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "longitude": {
                  "description": "Longitude in decimal degrees (WGS84, -180 to 180)",
                  "examples": [
                    9.14,
                    10.32,
                    2.17
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                "range_hours": {
                  "default": 48,
                  "description": "Duration in hours (default 48, max 744 = ~31 days).",
                  "examples": [
                    24,
                    48
                  ],
                  "maximum": 744,
                  "minimum": 1,
                  "type": "integer"
                },
                "stations_only": {
                  "default": false,
                  "description": "If true, return nearby stations without fetching predictions (station discovery mode). Defaults to false.",
                  "examples": [
                    true,
                    false
                  ],
                  "type": "boolean"
                },
                "units": {
                  "default": "metric",
                  "description": "Units: metric (meters) or english (feet)",
                  "enum": [
                    "metric",
                    "english"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "latitude",
                "longitude"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "_attribution": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "license": {
                        "type": "string"
                      },
                      "license_url": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "text",
                      "license",
                      "source_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "_disclaimer": {
                  "type": "string"
                },
                "center": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "count": {
                  "type": "number"
                },
                "data_source": {
                  "enum": [
                    "stations",
                    "model"
                  ],
                  "type": "string"
                },
                "datum": {
                  "enum": [
                    "MLLW",
                    "MLW",
                    "MSL",
                    "MHW",
                    "MHHW",
                    "NAVD",
                    "STND"
                  ],
                  "type": "string"
                },
                "interval": {
                  "enum": [
                    "h",
                    "hilo"
                  ],
                  "type": "string"
                },
                "location": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "mode": {
                  "enum": [
                    "stations",
                    "predictions"
                  ],
                  "type": "string"
                },
                "model": {
                  "additionalProperties": false,
                  "properties": {
                    "disclaimer": {
                      "type": "string"
                    },
                    "resolution_km": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "resolution_km",
                    "disclaimer"
                  ],
                  "type": "object"
                },
                "note": {
                  "type": "string"
                },
                "predictions": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "level_m": {
                        "type": "number"
                      },
                      "time": {
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "high",
                          "low"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "time",
                      "level_m"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "range_m": {
                  "type": "number"
                },
                "station": {
                  "additionalProperties": false,
                  "properties": {
                    "distance_nm": {
                      "type": "number"
                    },
                    "id": {
                      "type": "string"
                    },
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    },
                    "name": {
                      "type": "string"
                    },
                    "state": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "state",
                    "latitude",
                    "longitude",
                    "distance_nm"
                  ],
                  "type": "object"
                },
                "stations": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "distance_nm": {
                        "type": "number"
                      },
                      "id": {
                        "type": "string"
                      },
                      "latitude": {
                        "type": "number"
                      },
                      "longitude": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "state",
                      "latitude",
                      "longitude",
                      "distance_nm"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "units": {
                  "enum": [
                    "meters",
                    "feet"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "mode",
                "count",
                "_attribution"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_search_places",
            "title": "Search Places",
            "description": "Mediterranean nautical place search by proximity. latitude+longitude are ALWAYS required — this is not a standalone text search. 'query' is only a name filter applied within that radius; to find a place by name without known coordinates, call nausika_geocode first. Returns name, coords, distance_km, ratings, i18n names, wiki/OSM links. Each result is prefixed with an 8-char [xxxxxxxx] short-id usable as place_id in nausika_get_place / nausika_manage_favorite / nausika_manage_rating / nausika_manage_route legs[].pois[].\n\nInputs: latitude, longitude, radius_km, query, type, types, category, shelter_from, bottom_type, names_lang, min_coverage_score, max_coverage_score, limit, offset.\n\nExample: latitude=44.3, longitude=9.21, radius_km=50, query=\"marina genova\", category=\"poi\". Chain nausika_geocode → nausika_search_places → nausika_get_place(short-id).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bottom_type": {
                  "description": "Bottom type filter (e.g. 'sand')",
                  "enum": [
                    "sand",
                    "mud",
                    "rock",
                    "gravel",
                    "clay",
                    "coral",
                    "weed",
                    "shells"
                  ],
                  "type": "string"
                },
                "category": {
                  "description": "Filter by category",
                  "enum": [
                    "poi",
                    "location"
                  ],
                  "examples": [
                    "poi",
                    "location"
                  ],
                  "type": "string"
                },
                "latitude": {
                  "description": "Center latitude for proximity search",
                  "examples": [
                    38.7,
                    44.4
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "limit": {
                  "default": 30,
                  "description": "Max results, default 30, max 100",
                  "examples": [
                    10,
                    20,
                    50
                  ],
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "longitude": {
                  "description": "Center longitude for proximity search",
                  "examples": [
                    9.14,
                    15.6
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                "max_coverage_score": {
                  "description": "Maximum coverage score 0-100 — filter to low-coverage places that need enrichment",
                  "examples": [
                    30,
                    50
                  ],
                  "maximum": 100,
                  "minimum": 0,
                  "type": "integer"
                },
                "min_coverage_score": {
                  "description": "Minimum coverage score 0-100 — filter places by data completeness",
                  "examples": [
                    60,
                    80
                  ],
                  "maximum": 100,
                  "minimum": 0,
                  "type": "integer"
                },
                "names_lang": {
                  "description": "ISO 639-1 lang code. When set, response `name` is replaced with attributes.i18n.names[lang] if present; canonical OSM name kept as `name_canonical`.",
                  "examples": [
                    "it",
                    "fr",
                    "en"
                  ],
                  "pattern": "^[a-z]{2,3}(-[A-Z]{2})?$",
                  "type": "string"
                },
                "offset": {
                  "default": 0,
                  "description": "Offset for pagination",
                  "examples": [
                    0,
                    30,
                    60
                  ],
                  "maximum": 9007199254740991,
                  "minimum": 0,
                  "type": "integer"
                },
                "query": {
                  "description": "Fuzzy text filter on place name, applied WITHIN the proximity search — requires latitude/longitude too, it is not a standalone text search. For 'find this place by name anywhere', use nausika_geocode instead.",
                  "examples": [
                    "marina genova",
                    "porto antico",
                    "Bonifacio"
                  ],
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "radius_km": {
                  "default": 50,
                  "description": "Search radius in km (default 50, max 200)",
                  "examples": [
                    25,
                    50,
                    100
                  ],
                  "maximum": 200,
                  "minimum": 0.5,
                  "type": "number"
                },
                "shelter_from": {
                  "description": "Compass direction to filter shelter (e.g. 'NW')",
                  "enum": [
                    "N",
                    "NE",
                    "E",
                    "SE",
                    "S",
                    "SW",
                    "W",
                    "NW"
                  ],
                  "type": "string"
                },
                "type": {
                  "description": "Filter by place type (ignored if 'types' is provided)",
                  "enum": [
                    "marina",
                    "port",
                    "bay",
                    "fuel_station",
                    "yacht_club",
                    "city",
                    "island",
                    "cape",
                    "gulf",
                    "lighthouse",
                    "beach",
                    "town",
                    "village",
                    "peninsula",
                    "strait",
                    "restaurant",
                    "bar",
                    "cafe",
                    "supermarket",
                    "convenience",
                    "bakery",
                    "pharmacy",
                    "atm",
                    "laundry",
                    "post_office",
                    "clinic",
                    "water_point",
                    "chandlery"
                  ],
                  "type": "string"
                },
                "types": {
                  "description": "Filter by multiple place types (takes precedence over 'type')",
                  "examples": [
                    [
                      "marina",
                      "anchorage"
                    ],
                    [
                      "marina",
                      "port"
                    ]
                  ],
                  "items": {
                    "enum": [
                      "marina",
                      "port",
                      "bay",
                      "fuel_station",
                      "yacht_club",
                      "city",
                      "island",
                      "cape",
                      "gulf",
                      "lighthouse",
                      "beach",
                      "town",
                      "village",
                      "peninsula",
                      "strait",
                      "restaurant",
                      "bar",
                      "cafe",
                      "supermarket",
                      "convenience",
                      "bakery",
                      "pharmacy",
                      "atm",
                      "laundry",
                      "post_office",
                      "clinic",
                      "water_point",
                      "chandlery"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "_attribution": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "license": {
                        "type": "string"
                      },
                      "license_url": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "text",
                      "license",
                      "source_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "center": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "count": {
                  "type": "number"
                },
                "places": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "avg_rating": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "bottom_type": {
                        "items": {
                          "enum": [
                            "sand",
                            "mud",
                            "rock",
                            "gravel",
                            "clay",
                            "coral",
                            "weed",
                            "shells"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "category": {
                        "enum": [
                          "poi",
                          "location"
                        ],
                        "type": "string"
                      },
                      "coverage_score": {
                        "type": "number"
                      },
                      "data_origin_unverified": {
                        "type": "boolean"
                      },
                      "description": {
                        "type": "string"
                      },
                      "distance_km": {
                        "type": "number"
                      },
                      "elevation_m": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "email": {
                        "type": "string"
                      },
                      "i18n": {
                        "additionalProperties": false,
                        "properties": {
                          "descriptions": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "propertyNames": {
                              "type": "string"
                            },
                            "type": "object"
                          },
                          "names": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "propertyNames": {
                              "type": "string"
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "id": {
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$",
                        "type": "string"
                      },
                      "images": {
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "alt_text": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "attribution_url": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "caption": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "credit": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "height": {
                              "anyOf": [
                                {
                                  "maximum": 9007199254740991,
                                  "minimum": -9007199254740991,
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "id": {
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$",
                              "type": "string"
                            },
                            "large_url": {
                              "type": "string"
                            },
                            "sort_order": {
                              "maximum": 9007199254740991,
                              "minimum": -9007199254740991,
                              "type": "integer"
                            },
                            "status": {
                              "enum": [
                                "pending",
                                "processing",
                                "ready",
                                "failed"
                              ],
                              "type": "string"
                            },
                            "thumb_url": {
                              "type": "string"
                            },
                            "width": {
                              "anyOf": [
                                {
                                  "maximum": 9007199254740991,
                                  "minimum": -9007199254740991,
                                  "type": "integer"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "status",
                            "sort_order",
                            "thumb_url",
                            "large_url"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "is_favorited": {
                        "type": "boolean"
                      },
                      "latitude": {
                        "type": "number"
                      },
                      "links": {
                        "additionalProperties": false,
                        "properties": {
                          "osm_url": {
                            "type": "string"
                          },
                          "wikidata_url": {
                            "type": "string"
                          },
                          "wikipedia_url": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "longitude": {
                        "type": "number"
                      },
                      "max_loa_m": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "name": {
                        "type": "string"
                      },
                      "name_canonical": {
                        "type": "string"
                      },
                      "opening_hours": {
                        "type": "string"
                      },
                      "osm_primary_id": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "osm_primary_type": {
                        "anyOf": [
                          {
                            "enum": [
                              "node",
                              "way",
                              "relation"
                            ],
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "own_rating": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "phone": {
                        "type": "string"
                      },
                      "port_of_entry": {
                        "anyOf": [
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "rating_count": {
                        "type": "number"
                      },
                      "shelter_from": {
                        "items": {
                          "enum": [
                            "N",
                            "NE",
                            "E",
                            "SE",
                            "S",
                            "SW",
                            "W",
                            "NW"
                          ],
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "sources": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "type": {
                        "enum": [
                          "marina",
                          "port",
                          "bay",
                          "fuel_station",
                          "yacht_club",
                          "city",
                          "island",
                          "cape",
                          "gulf",
                          "lighthouse",
                          "beach",
                          "town",
                          "village",
                          "peninsula",
                          "strait",
                          "restaurant",
                          "bar",
                          "cafe",
                          "supermarket",
                          "convenience",
                          "bakery",
                          "pharmacy",
                          "atm",
                          "laundry",
                          "post_office",
                          "clinic",
                          "water_point",
                          "chandlery"
                        ],
                        "type": "string"
                      },
                      "vhf_channel": {
                        "type": "string"
                      },
                      "website": {
                        "type": "string"
                      },
                      "wiki_images": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "wikidata_id": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "wikipedia": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "category",
                      "type",
                      "latitude",
                      "longitude",
                      "coverage_score",
                      "sources",
                      "avg_rating",
                      "rating_count",
                      "images",
                      "wiki_images",
                      "links"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "radius_km": {
                  "type": "number"
                }
              },
              "required": [
                "center",
                "radius_km",
                "count",
                "places",
                "_attribution"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_get_place",
            "title": "Get Place",
            "description": "Fetch full detail for a single place given its 'id'. Accepts either a full UUID or the 8-char [xxxxxxxx] short-id shown by nausika_search_places. Returns canonical attributes (name/coords/category/type), localized i18n names+descriptions, wiki image URLs, ratings aggregates, plus extras only this tool provides: the raw OpenStreetMap tags of the primary OSM feature, and direct links to OSM, Wikidata, and Wikipedia.\n\nUse this after nausika_search_places returns a result you want to drill into. For proximity / text search, use nausika_search_places.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Place id — full UUID or 8+ char hex prefix (the [xxxxxxxx] shown by nausika_search_places).",
                  "examples": [
                    "550e8400-e29b-41d4-a716-446655440000",
                    "550e8400"
                  ],
                  "maxLength": 64,
                  "minLength": 8,
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "_attribution": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "license": {
                        "type": "string"
                      },
                      "license_url": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "text",
                      "license",
                      "source_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "avg_rating": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "bottom_type": {
                  "items": {
                    "enum": [
                      "sand",
                      "mud",
                      "rock",
                      "gravel",
                      "clay",
                      "coral",
                      "weed",
                      "shells"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "category": {
                  "enum": [
                    "poi",
                    "location"
                  ],
                  "type": "string"
                },
                "coverage_score": {
                  "type": "number"
                },
                "data_origin_unverified": {
                  "type": "boolean"
                },
                "description": {
                  "type": "string"
                },
                "distance_km": {
                  "type": "number"
                },
                "elevation_m": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "email": {
                  "type": "string"
                },
                "i18n": {
                  "additionalProperties": false,
                  "properties": {
                    "descriptions": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "propertyNames": {
                        "type": "string"
                      },
                      "type": "object"
                    },
                    "names": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "propertyNames": {
                        "type": "string"
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "id": {
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$",
                  "type": "string"
                },
                "images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "alt_text": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "attribution_url": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "caption": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "credit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "height": {
                        "anyOf": [
                          {
                            "maximum": 9007199254740991,
                            "minimum": -9007199254740991,
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "id": {
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$",
                        "type": "string"
                      },
                      "large_url": {
                        "type": "string"
                      },
                      "sort_order": {
                        "maximum": 9007199254740991,
                        "minimum": -9007199254740991,
                        "type": "integer"
                      },
                      "status": {
                        "enum": [
                          "pending",
                          "processing",
                          "ready",
                          "failed"
                        ],
                        "type": "string"
                      },
                      "thumb_url": {
                        "type": "string"
                      },
                      "width": {
                        "anyOf": [
                          {
                            "maximum": 9007199254740991,
                            "minimum": -9007199254740991,
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "status",
                      "sort_order",
                      "thumb_url",
                      "large_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "is_favorited": {
                  "type": "boolean"
                },
                "latitude": {
                  "type": "number"
                },
                "links": {
                  "additionalProperties": false,
                  "properties": {
                    "osm_url": {
                      "type": "string"
                    },
                    "wikidata_url": {
                      "type": "string"
                    },
                    "wikipedia_url": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "longitude": {
                  "type": "number"
                },
                "max_loa_m": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "type": "string"
                },
                "name_canonical": {
                  "type": "string"
                },
                "opening_hours": {
                  "type": "string"
                },
                "osm_primary_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "osm_primary_type": {
                  "anyOf": [
                    {
                      "enum": [
                        "node",
                        "way",
                        "relation"
                      ],
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "own_rating": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "phone": {
                  "type": "string"
                },
                "port_of_entry": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "rating_count": {
                  "type": "number"
                },
                "raw_osm_tags": {
                  "anyOf": [
                    {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "propertyNames": {
                        "type": "string"
                      },
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "shelter_from": {
                  "items": {
                    "enum": [
                      "N",
                      "NE",
                      "E",
                      "SE",
                      "S",
                      "SW",
                      "W",
                      "NW"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "sources": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "marina",
                    "port",
                    "bay",
                    "fuel_station",
                    "yacht_club",
                    "city",
                    "island",
                    "cape",
                    "gulf",
                    "lighthouse",
                    "beach",
                    "town",
                    "village",
                    "peninsula",
                    "strait",
                    "restaurant",
                    "bar",
                    "cafe",
                    "supermarket",
                    "convenience",
                    "bakery",
                    "pharmacy",
                    "atm",
                    "laundry",
                    "post_office",
                    "clinic",
                    "water_point",
                    "chandlery"
                  ],
                  "type": "string"
                },
                "vhf_channel": {
                  "type": "string"
                },
                "website": {
                  "type": "string"
                },
                "wiki_images": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "wikidata_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "wikipedia": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "name",
                "category",
                "type",
                "latitude",
                "longitude",
                "coverage_score",
                "sources",
                "avg_rating",
                "rating_count",
                "images",
                "wiki_images",
                "links",
                "raw_osm_tags",
                "_attribution"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_sea_route",
            "title": "Sea Route \u0026 Distance",
            "description": "Maritime routing via pgRouting Dijkstra on the MARNET sea-lane graph (Mediterranean only; errors out elsewhere), 6 kn sailing-yacht default, snaps land coordinates to the nearest marina/anchorage/port.\n\nReturns distance, ETA, waypoint count, GeoJSON.\n\nExamples:\n  - Genova → Bastia: origin_lat=44.4, origin_lon=8.93, dest_lat=42.7, dest_lon=9.45\n  - Distance-only: same coords with include_waypoints=false\n\nTip: chain nausika_geocode → here → nausika_calculator.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "dest_lat": {
                  "description": "Destination latitude",
                  "examples": [
                    38.7,
                    43.55,
                    41.39
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "dest_lon": {
                  "description": "Destination longitude",
                  "examples": [
                    9.14,
                    10.32,
                    2.17
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                "include_waypoints": {
                  "default": true,
                  "description": "Set to false for distance-only mode (no waypoints or GeoJSON)",
                  "examples": [
                    true,
                    false
                  ],
                  "type": "boolean"
                },
                "optimization": {
                  "default": "fast",
                  "description": "Waypoint smoothing level. 'fast' (default): light smoothing, milliseconds. 'precise': highest-quality smoothing, slower (up to a few seconds). 'off': raw waypoints, unsmoothed.",
                  "enum": [
                    "off",
                    "fast",
                    "precise"
                  ],
                  "type": "string"
                },
                "origin_lat": {
                  "description": "Origin latitude",
                  "examples": [
                    38.7,
                    43.55,
                    41.39
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "origin_lon": {
                  "description": "Origin longitude",
                  "examples": [
                    9.14,
                    10.32,
                    2.17
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                "snap_to_water": {
                  "default": true,
                  "description": "If origin or destination falls on land (e.g. a city centroid from nausika_geocode like Lisbon → 38.71, -9.14), automatically snap to the nearest known marine place (marina, anchorage, port) within a nearby distance. Set to false to disable and force a hard error on land coordinates. Default true.",
                  "examples": [
                    true
                  ],
                  "type": "boolean"
                },
                "speed_knots": {
                  "description": "Vessel speed in knots for ETA calculation. Omit to use the caller's saved boat profile speed if one exists, else 6 kn (typical sailing yacht). An explicit value always wins over the boat profile.",
                  "examples": [
                    6,
                    7,
                    8
                  ],
                  "maximum": 50,
                  "minimum": 0.5,
                  "type": "number"
                },
                "units": {
                  "default": "nauticalmiles",
                  "description": "Distance units (default: nauticalmiles)",
                  "enum": [
                    "nauticalmiles",
                    "kilometers",
                    "miles"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "origin_lat",
                "origin_lon",
                "dest_lat",
                "dest_lon"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "_attribution": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "license": {
                        "type": "string"
                      },
                      "license_url": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "text",
                      "license",
                      "source_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "_disclaimer": {
                  "type": "string"
                },
                "dest_snap_distance_nm": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "dest_snap_nm": {
                  "type": "number"
                },
                "dest_snapped_from": {
                  "additionalProperties": false,
                  "properties": {
                    "lat": {
                      "type": "number"
                    },
                    "lon": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "lat",
                    "lon"
                  ],
                  "type": "object"
                },
                "dest_snapped_to": {
                  "additionalProperties": false,
                  "properties": {
                    "lat": {
                      "type": "number"
                    },
                    "lon": {
                      "type": "number"
                    },
                    "place_name": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "lat",
                    "lon"
                  ],
                  "type": "object"
                },
                "destination": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "direct_distance_nm": {
                  "type": "number"
                },
                "distance": {
                  "type": "number"
                },
                "estimated_duration_hours": {
                  "type": "number"
                },
                "optimization": {
                  "type": "string"
                },
                "optimization_failed": {
                  "type": "boolean"
                },
                "optimization_used": {
                  "type": "string"
                },
                "origin": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "origin_snap_distance_nm": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "origin_snap_nm": {
                  "type": "number"
                },
                "origin_snapped_from": {
                  "additionalProperties": false,
                  "properties": {
                    "lat": {
                      "type": "number"
                    },
                    "lon": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "lat",
                    "lon"
                  ],
                  "type": "object"
                },
                "origin_snapped_to": {
                  "additionalProperties": false,
                  "properties": {
                    "lat": {
                      "type": "number"
                    },
                    "lon": {
                      "type": "number"
                    },
                    "place_name": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "lat",
                    "lon"
                  ],
                  "type": "object"
                },
                "route_geojson": {
                  "additionalProperties": false,
                  "properties": {
                    "geometry": {
                      "additionalProperties": false,
                      "properties": {
                        "coordinates": {
                          "items": {
                            "items": {
                              "type": "number"
                            },
                            "type": "array"
                          },
                          "type": "array"
                        },
                        "type": {
                          "const": "LineString",
                          "type": "string"
                        }
                      },
                      "required": [
                        "type",
                        "coordinates"
                      ],
                      "type": "object"
                    },
                    "properties": {
                      "additionalProperties": false,
                      "properties": {
                        "length": {
                          "type": "number"
                        },
                        "units": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "length",
                        "units"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "Feature",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "properties",
                    "geometry"
                  ],
                  "type": "object"
                },
                "shorter_than_direct": {
                  "type": "boolean"
                },
                "snap_warning": {
                  "type": "boolean"
                },
                "speed_knots": {
                  "type": "number"
                },
                "units": {
                  "type": "string"
                },
                "waypoints_count": {
                  "type": "number"
                }
              },
              "required": [
                "origin",
                "destination",
                "distance",
                "units",
                "speed_knots",
                "estimated_duration_hours",
                "_attribution"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_calculator",
            "title": "Calculator",
            "description": "Evaluate a math expression and return the numeric result. Useful for fuel, range/autonomy, unit conversions, and ad-hoc arithmetic.\n\nSupported (exhaustive): +, -, *, /, ^, %, parentheses, sqrt(), abs(), ceil(), floor(), round(), sin(), cos(), tan(), log(), exp(), min(), max(), PI, E. Anything else (atan2, pow, log10, hypot, if, factorial, comparisons) is rejected.\n\nExamples: \"(120 / 6) * 8.5\" (fuel for 120 nm at 8.5 L/h, 6 kn); \"45 * 1.852\" (nm to km).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "expression": {
                  "description": "Math expression to evaluate",
                  "examples": [
                    "(450 / 8.5) * 1.1",
                    "sqrt(3^2 + 4^2)",
                    "45 * 1.852"
                  ],
                  "maxLength": 500,
                  "minLength": 1,
                  "type": "string"
                },
                "precision": {
                  "default": 4,
                  "description": "Decimal places in the result (default 4)",
                  "examples": [
                    2,
                    4,
                    6
                  ],
                  "maximum": 15,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "expression"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "expression": {
                  "type": "string"
                },
                "precision": {
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                },
                "result": {
                  "type": "number"
                }
              },
              "required": [
                "expression",
                "result",
                "precision"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_geocode",
            "title": "Geocode Place Names",
            "description": "Resolve a place 'query' to coordinates (forward) or find nearest places to 'latitude'+'longitude' (reverse). Mediterranean-focused curated DB; forward falls back to OSM/Nominatim globally. Each result carries a 'source' discriminator ('local' for the curated marine DB, 'osm' for the global fallback). Returns name, type, coords, source, plus similarity (forward) or distance_m (reverse).\n\nExample forward: query=\"Portofino\". Example reverse: latitude=44.3, longitude=9.21, radius_m=50000.\n\nWhen the same name exists in several seas (e.g. \"Salerno port\": Italy and Florida), results carry a 'region' and the best of each sea is included — pick by the user's context, or pass near_latitude/near_longitude (boat position, departure port) to put that sea first.\n\nChain into nausika_marine_forecast, nausika_tides, nausika_search_places, or nausika_sea_route using the returned coords.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "latitude": {
                  "description": "Latitude for reverse geocoding",
                  "examples": [
                    38.7,
                    44.3
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "limit": {
                  "default": 3,
                  "description": "Max results, default 3, max 10",
                  "examples": [
                    1,
                    3,
                    5
                  ],
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "longitude": {
                  "description": "Longitude for reverse geocoding",
                  "examples": [
                    15.2,
                    9.21
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                "near_latitude": {
                  "description": "Optional, forward only: latitude of where the user is (boat position, port of departure). When the same name exists in several seas, results from that sea come first.",
                  "examples": [
                    40.67
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "near_longitude": {
                  "description": "Optional, forward only: longitude paired with near_latitude.",
                  "examples": [
                    14.75
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                "query": {
                  "description": "Place name to search, forward geocoding",
                  "examples": [
                    "Porto Cervo",
                    "Bonifacio",
                    "Calanque de Sormiou"
                  ],
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "radius_m": {
                  "default": 50000,
                  "description": "Search radius for reverse geocoding in meters, default 50000",
                  "examples": [
                    10000,
                    50000,
                    100000
                  ],
                  "maximum": 200000,
                  "minimum": 1000,
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "_attribution": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "license": {
                        "type": "string"
                      },
                      "license_url": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "text",
                      "license",
                      "source_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "count": {
                  "type": "number"
                },
                "latitude": {
                  "type": "number"
                },
                "longitude": {
                  "type": "number"
                },
                "mode": {
                  "enum": [
                    "forward",
                    "reverse"
                  ],
                  "type": "string"
                },
                "query": {
                  "type": "string"
                },
                "results": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "category": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "country": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "distance_m": {
                        "type": "number"
                      },
                      "id": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "latitude": {
                        "type": "number"
                      },
                      "longitude": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      },
                      "region": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "similarity": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "source": {
                        "enum": [
                          "local",
                          "osm"
                        ],
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "category",
                      "type",
                      "latitude",
                      "longitude",
                      "description",
                      "source"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "source": {
                  "enum": [
                    "local",
                    "osm"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "mode",
                "count",
                "results",
                "_attribution"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_describe_place_schema",
            "title": "Describe Place Schema",
            "description": "Returns the expected attributes for a given place 'type' (the only input parameter: marina, port, bay, fuel_station, city, island, etc.). Useful to understand what fields are available on places of that type.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "type": {
                  "description": "Place type to describe. See nausika_describe_place_schema response 'Valid place types' for the full enum.",
                  "enum": [
                    "marina",
                    "port",
                    "bay",
                    "fuel_station",
                    "yacht_club",
                    "city",
                    "island",
                    "cape",
                    "gulf",
                    "lighthouse",
                    "beach",
                    "town",
                    "village",
                    "peninsula",
                    "strait",
                    "restaurant",
                    "bar",
                    "cafe",
                    "supermarket",
                    "convenience",
                    "bakery",
                    "pharmacy",
                    "atm",
                    "laundry",
                    "post_office",
                    "clinic",
                    "water_point",
                    "chandlery"
                  ],
                  "examples": [
                    "marina",
                    "bay",
                    "port"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "agentRuleNotes": {
                  "additionalProperties": false,
                  "properties": {
                    "appliesTo": {
                      "type": "string"
                    },
                    "bypassedBy": {
                      "type": "string"
                    },
                    "errorBehavior": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "appliesTo",
                    "bypassedBy",
                    "errorBehavior"
                  ],
                  "type": "object"
                },
                "agentRules": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "appliesTo": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "field": {
                        "type": "string"
                      },
                      "rationale": {
                        "type": "string"
                      },
                      "requirement": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "field",
                      "requirement"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "attributes": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "enum": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "name": {
                        "type": "string"
                      },
                      "required": {
                        "type": "boolean"
                      },
                      "type": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "type",
                      "required"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "imageFields": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "enum": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "name": {
                        "type": "string"
                      },
                      "required": {
                        "type": "boolean"
                      },
                      "type": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "type",
                      "required"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "imageRules": {
                  "additionalProperties": false,
                  "properties": {
                    "acceptedSources": {
                      "type": "string"
                    },
                    "dedupKey": {
                      "type": "string"
                    },
                    "forbiddenSources": {
                      "type": "string"
                    },
                    "maxCount": {
                      "type": "number"
                    },
                    "validation": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maxCount",
                    "dedupKey",
                    "acceptedSources",
                    "forbiddenSources",
                    "validation"
                  ],
                  "type": "object"
                },
                "promotedColumns": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "enum": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "name": {
                        "type": "string"
                      },
                      "required": {
                        "type": "boolean"
                      },
                      "type": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "type",
                      "required"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "requestedType": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "universalRules": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "appliesTo": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "field": {
                        "type": "string"
                      },
                      "rationale": {
                        "type": "string"
                      },
                      "requirement": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "field",
                      "requirement"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "type",
                "requestedType",
                "promotedColumns",
                "attributes",
                "imageFields",
                "imageRules",
                "universalRules",
                "agentRules",
                "agentRuleNotes"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_is_water",
            "title": "Is Water",
            "description": "Check whether a coordinate (latitude, longitude in decimal degrees) is on water or land, and how far it is from the coast. Returns:\n- is_water: boolean (true if over sea, false if over land)\n- distance_to_coast_m: meters to the nearest coastline boundary; meaningful on either side (sea → distance to shore, inland → distance to sea, e.g. Rome ≈ 25 km).\n- source: detection source\n\nUseful to verify waypoints in route planning, or to gauge how coastal/inland a point is.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "latitude": {
                  "description": "Latitude in decimal degrees (-90 to 90)",
                  "examples": [
                    38.7,
                    43.55,
                    41.39
                  ],
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                "longitude": {
                  "description": "Longitude in decimal degrees (-180 to 180)",
                  "examples": [
                    9.14,
                    10.32,
                    2.17
                  ],
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                }
              },
              "required": [
                "latitude",
                "longitude"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "_attribution": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "license": {
                        "type": "string"
                      },
                      "license_url": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "text",
                      "license",
                      "source_url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "distance_to_coast_m": {
                  "type": "number"
                },
                "is_water": {
                  "type": "boolean"
                },
                "latitude": {
                  "type": "number"
                },
                "longitude": {
                  "type": "number"
                },
                "source": {
                  "type": "string"
                }
              },
              "required": [
                "latitude",
                "longitude",
                "is_water",
                "distance_to_coast_m",
                "source",
                "_attribution"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_convert_coordinates",
            "title": "Convert Coordinates",
            "description": "Convert nautical coordinates between decimal degrees, DMS, and DM.\n\nInputs: latitude, longitude — each accepts decimal (44.4), DMS (\"44°24'00\\\"N\"), or DM (\"44°24.0'N\"). Returns all three formats plus input_format (detected per-axis).\n\nExamples: latitude=\"44°24'N\", longitude=\"9°02'E\" → 44.4, 9.03; latitude=\"41°01'44.04\\\"N\", longitude=\"009°32'42.00\\\"E\" → 41.0289, 9.545.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "latitude": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "description": "Latitude as decimal degrees or DMS/DM string",
                  "examples": [
                    41.0289,
                    "41°01′44.04″N",
                    "41°01.7'N"
                  ]
                },
                "longitude": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "description": "Longitude as decimal degrees or DMS/DM string",
                  "examples": [
                    9.545,
                    "009°32′42.00″E",
                    "9°32.7'E"
                  ]
                }
              },
              "required": [
                "latitude",
                "longitude"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "decimal": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "number"
                    },
                    "longitude": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "dm": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "string"
                    },
                    "longitude": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "dms": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "string"
                    },
                    "longitude": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                },
                "input_format": {
                  "additionalProperties": false,
                  "properties": {
                    "latitude": {
                      "type": "string"
                    },
                    "longitude": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "latitude",
                    "longitude"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "decimal",
                "dms",
                "dm",
                "input_format"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_manage_boat_profile",
            "title": "Manage Boat Profile",
            "description": "Manage boat profile (multi-boat per account, keyed by name).\n\nInputs: action, name, type, loa_m, beam_m, draft_m, displacement_kg, engine_type, engine_hp, fuel_capacity_l, motor_consumption_l_per_h, water_capacity_l, cruising_speed_kts, max_speed_kts, safety_equipment, certifications.\n\nExamples: action=\"upsert\", name=\"Freya\", type=\"sail\", loa_m=12.5; action=\"delete\", name=\"Freya\"; action=\"set_default\", name=\"Freya\".\n\nTip: speed/consumption enrich nausika_sea_route ETA.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "action": {
                  "description": "Create/update, delete, or set a boat as default",
                  "enum": [
                    "upsert",
                    "delete",
                    "set_default"
                  ],
                  "type": "string"
                },
                "beam_m": {
                  "description": "Maximum beam in meters",
                  "examples": [
                    4.1
                  ],
                  "maximum": 50,
                  "minimum": 0.5,
                  "type": "number"
                },
                "certifications": {
                  "description": "Certifications",
                  "examples": [
                    "CE B"
                  ],
                  "type": "string"
                },
                "cruising_speed_kts": {
                  "description": "Cruising speed in knots",
                  "examples": [
                    6
                  ],
                  "maximum": 50,
                  "minimum": 0.5,
                  "type": "number"
                },
                "displacement_kg": {
                  "description": "Displacement in kg",
                  "examples": [
                    8500
                  ],
                  "maximum": 500000,
                  "minimum": 100,
                  "type": "integer"
                },
                "draft_m": {
                  "description": "Draft in meters",
                  "examples": [
                    1.8
                  ],
                  "maximum": 20,
                  "minimum": 0.1,
                  "type": "number"
                },
                "engine_hp": {
                  "description": "Engine power in HP",
                  "examples": [
                    30
                  ],
                  "maximum": 5000,
                  "minimum": 1,
                  "type": "integer"
                },
                "engine_type": {
                  "description": "Engine type",
                  "enum": [
                    "inboard",
                    "outboard",
                    "none"
                  ],
                  "type": "string"
                },
                "fuel_capacity_l": {
                  "description": "Fuel tank capacity in liters",
                  "examples": [
                    200
                  ],
                  "maximum": 50000,
                  "minimum": 1,
                  "type": "integer"
                },
                "loa_m": {
                  "description": "Length overall in meters",
                  "examples": [
                    12.5
                  ],
                  "maximum": 200,
                  "minimum": 1,
                  "type": "number"
                },
                "max_speed_kts": {
                  "description": "Maximum speed in knots",
                  "examples": [
                    8
                  ],
                  "maximum": 80,
                  "minimum": 0.5,
                  "type": "number"
                },
                "motor_consumption_l_per_h": {
                  "description": "Average motor fuel consumption at cruising RPM, in litres per hour",
                  "examples": [
                    3.5
                  ],
                  "maximum": 1000,
                  "minimum": 0,
                  "type": "number"
                },
                "name": {
                  "description": "Boat name (required for create, identifies boat for update/delete)",
                  "examples": [
                    "Calypso II",
                    "Mistral"
                  ],
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "safety_equipment": {
                  "description": "Safety equipment description",
                  "examples": [
                    "VHF",
                    "EPIRB",
                    "liferaft"
                  ],
                  "type": "string"
                },
                "type": {
                  "description": "Boat type",
                  "enum": [
                    "sail",
                    "motor",
                    "multihull"
                  ],
                  "type": "string"
                },
                "water_capacity_l": {
                  "description": "Water tank capacity in liters",
                  "examples": [
                    250
                  ],
                  "maximum": 10000,
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "required": [
                "action"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": {},
              "properties": {
                "action": {
                  "enum": [
                    "upsert",
                    "delete",
                    "set_default"
                  ],
                  "type": "string"
                },
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "action"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "nausika_get_boat_profile",
            "title": "Get Boat Profile",
            "description": "Get your saved boat profile(s). Omit name for the default boat, or use name=\"*\" to list all boats.\n\nTip: use boat speed/consumption with nausika_sea_route and nausika_calculator for trip planning.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Boat name. Omit to get the default boat, or use '*' to list all.",
                  "examples": [
                    "Calypso II"
                  ],
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": {},
              "properties": {
                "boats": {
                  "items": {
                    "additionalProperties": {},
                    "properties": {
                      "beam_m": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "certifications": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "cruising_speed_kts": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "displacement_kg": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "draft_m": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "engine_hp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "engine_type": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "fuel_capacity_l": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "id": {
                        "type": "string"
                      },
                      "is_default": {
                        "type": "boolean"
                      },
                      "loa_m": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "max_speed_kts": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "motor_consumption_l_per_h": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "name": {
                        "type": "string"
                      },
                      "safety_equipment": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "type": {
                        "type": "string"
                      },
                      "user_id": {
                        "type": "string"
                      },
                      "water_capacity_l": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "found": {
                  "type": "boolean"
                },
                "id": {
                  "type": "string"
                },
                "is_default": {
                  "type": "boolean"
                },
                "name": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_manage_favorite",
            "title": "Manage Favorite",
            "description": "Add or remove a place from your favorites list.\n\nExamples:\n  - Add: action=\"add\", place_id=\"a1b2c3d4\", note=\"Great anchorage for overnight\"\n  - Remove: action=\"remove\", place_id=\"a1b2c3d4\"\n\nplace_id accepts the 8-char [xxxxxxxx] shown by nausika_search_places, or a full UUID. Find places first with nausika_search_places, then bookmark by place_id.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "action": {
                  "description": "Add or remove a favorite",
                  "enum": [
                    "add",
                    "remove"
                  ],
                  "type": "string"
                },
                "note": {
                  "description": "Personal note (only for add)",
                  "examples": [
                    "Quiet bay, sheltered from mistral"
                  ],
                  "type": "string"
                },
                "place_id": {
                  "description": "Place id — full UUID or 8+ char hex prefix from nausika_search_places ([xxxxxxxx])",
                  "maxLength": 64,
                  "minLength": 8,
                  "type": "string"
                }
              },
              "required": [
                "action",
                "place_id"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": {},
              "properties": {
                "action": {
                  "enum": [
                    "add",
                    "remove"
                  ],
                  "type": "string"
                },
                "created_at": {
                  "type": "string"
                },
                "id": {
                  "type": "string"
                },
                "note": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "place": {
                  "anyOf": [
                    {
                      "additionalProperties": {},
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "place_id": {
                  "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string"
                },
                "user_id": {
                  "type": "string"
                }
              },
              "required": [
                "action",
                "place_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "nausika_get_favorites",
            "title": "Get Favorites",
            "description": "List your favorite places with details and personal notes. Ordered by most recently added.\n\nInputs: limit, offset.\n\nTip: use place coordinates with nausika_sea_route or nausika_marine_forecast for trip planning.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "default": 20,
                  "description": "Max results (default 20)",
                  "examples": [
                    20
                  ],
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "offset": {
                  "default": 0,
                  "description": "Offset for pagination",
                  "examples": [
                    0
                  ],
                  "maximum": 9007199254740991,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "favorites": {
                  "items": {
                    "additionalProperties": {},
                    "properties": {
                      "created_at": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "id": {
                        "type": "string"
                      },
                      "latitude": {
                        "type": "number"
                      },
                      "longitude": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      },
                      "note": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "place_id": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "place_id",
                      "note",
                      "created_at",
                      "name",
                      "type",
                      "latitude",
                      "longitude",
                      "description"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "limit": {
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                },
                "offset": {
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                }
              },
              "required": [
                "favorites",
                "limit",
                "offset"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_manage_rating",
            "title": "Manage Rating",
            "description": "Rate a place (1-5 stars) with an optional private comment. One rating per user per place.\n\nExamples:\n  - Rate: action=\"upsert\", place_id=\"a1b2c3d4\", score=4, comment=\"Clean facilities\"\n  - Delete: action=\"delete\", place_id=\"a1b2c3d4\"\n\nplace_id accepts the 8-char [xxxxxxxx] shown by nausika_search_places, or a full UUID. Find places first with nausika_search_places, then rate by place_id.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "action": {
                  "description": "Create/update or delete your rating",
                  "enum": [
                    "upsert",
                    "delete"
                  ],
                  "type": "string"
                },
                "comment": {
                  "description": "Private comment (only visible to you)",
                  "examples": [
                    "Clean facilities, friendly staff"
                  ],
                  "type": "string"
                },
                "place_id": {
                  "description": "Place id — full UUID or 8+ char hex prefix from nausika_search_places ([xxxxxxxx])",
                  "maxLength": 64,
                  "minLength": 8,
                  "type": "string"
                },
                "score": {
                  "description": "Rating 1-5 (required for upsert)",
                  "examples": [
                    4,
                    5
                  ],
                  "maximum": 5,
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "required": [
                "action",
                "place_id"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": {},
              "properties": {
                "action": {
                  "enum": [
                    "upsert",
                    "delete"
                  ],
                  "type": "string"
                },
                "aggregate": {
                  "additionalProperties": {},
                  "properties": {
                    "avg_rating": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "dist_1": {
                      "type": "string"
                    },
                    "dist_2": {
                      "type": "string"
                    },
                    "dist_3": {
                      "type": "string"
                    },
                    "dist_4": {
                      "type": "string"
                    },
                    "dist_5": {
                      "type": "string"
                    },
                    "rating_count": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "avg_rating",
                    "rating_count"
                  ],
                  "type": "object"
                },
                "place_id": {
                  "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string"
                },
                "rating": {
                  "additionalProperties": {},
                  "properties": {
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "place_id": {
                      "type": "string"
                    },
                    "score": {
                      "type": "number"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "user_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "required": [
                "action",
                "place_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "nausika_get_ratings",
            "title": "Get Ratings",
            "description": "View ratings for a place (aggregate + your own) or list all your ratings.\n\nInputs: place_id, my_only, limit, offset.\n\nExamples:\n  - Place ratings: place_id=\"a1b2c3d4\" (8-char short-id or full UUID)\n  - My ratings: my_only=true\n\nTip: ratings are visible in nausika_search_places results to help other sailors.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "default": 20,
                  "description": "Max results",
                  "examples": [
                    50
                  ],
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "my_only": {
                  "default": false,
                  "description": "List only your own ratings",
                  "examples": [
                    true
                  ],
                  "type": "boolean"
                },
                "offset": {
                  "default": 0,
                  "description": "Offset for pagination",
                  "examples": [
                    0
                  ],
                  "maximum": 9007199254740991,
                  "minimum": 0,
                  "type": "integer"
                },
                "place_id": {
                  "description": "Get ratings for a specific place — full UUID or 8+ char hex prefix from nausika_search_places",
                  "examples": [
                    "a1b2c3d4-e5f6-7890-abcd-ef0123456789",
                    "a1b2c3d4"
                  ],
                  "maxLength": 64,
                  "minLength": 8,
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": {},
              "properties": {
                "aggregate": {
                  "additionalProperties": {},
                  "properties": {
                    "avg_rating": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "dist_1": {
                      "type": "string"
                    },
                    "dist_2": {
                      "type": "string"
                    },
                    "dist_3": {
                      "type": "string"
                    },
                    "dist_4": {
                      "type": "string"
                    },
                    "dist_5": {
                      "type": "string"
                    },
                    "rating_count": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "avg_rating",
                    "rating_count"
                  ],
                  "type": "object"
                },
                "limit": {
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                },
                "my_rating": {
                  "anyOf": [
                    {
                      "additionalProperties": {},
                      "properties": {
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "id": {
                          "type": "string"
                        },
                        "place_id": {
                          "type": "string"
                        },
                        "score": {
                          "type": "number"
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "user_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "offset": {
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                },
                "ratings": {
                  "items": {
                    "additionalProperties": {},
                    "properties": {
                      "comment": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "created_at": {
                        "type": "string"
                      },
                      "id": {
                        "type": "string"
                      },
                      "place_id": {
                        "type": "string"
                      },
                      "score": {
                        "type": "number"
                      },
                      "updated_at": {
                        "type": "string"
                      },
                      "user_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "nausika_manage_route",
            "title": "Manage Route",
            "description": "Save a sailing route or multi-day itinerary; legs may link to places.\n\nTypical flow: compute legs with nausika_sea_route, then save here.\n\nExamples:\n  - Single: action=\"upsert\", name=\"Genova → Bastia\", route_type=\"single\", legs=[{...}]\n  - Itinerary: action=\"upsert\", name=\"Corsica Trip\", route_type=\"itinerary\", legs=[{leg_order:1,...,pois:[{place_id:\"a1b2c3d4\",role:\"overnight\"}]}]\n  - Delete: action=\"delete\", id=\"a1b2c3d4\"\n\nid and leg pois[].place_id accept either the 8-char [xxxxxxxx] short-id (from nausika_get_routes / nausika_search_places) or a full UUID.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "action": {
                  "description": "Create/update or delete",
                  "enum": [
                    "upsert",
                    "delete"
                  ],
                  "type": "string"
                },
                "description": {
                  "description": "Route description",
                  "examples": [
                    "Summer crossing with overnight in Calvi"
                  ],
                  "type": "string"
                },
                "id": {
                  "description": "Route id for update/delete — full UUID or 8+ char hex prefix from nausika_get_routes",
                  "examples": [
                    "550e8400-e29b-41d4-a716-446655440000",
                    "550e8400"
                  ],
                  "maxLength": 64,
                  "minLength": 8,
                  "type": "string"
                },
                "legs": {
                  "description": "Route legs, replaces all existing on update",
                  "examples": [
                    [
                      {
                        "dest_lat": 42.7,
                        "dest_lon": 9.45,
                        "dest_name": "Bastia",
                        "leg_order": 1,
                        "origin_lat": 44.4,
                        "origin_lon": 8.93,
                        "origin_name": "Genova"
                      }
                    ]
                  ],
                  "items": {
                    "properties": {
                      "departure_date": {
                        "description": "Planned departure (ISO 8601)",
                        "type": "string"
                      },
                      "dest_lat": {
                        "description": "Destination latitude",
                        "examples": [
                          38.7,
                          43.55,
                          41.39
                        ],
                        "maximum": 90,
                        "minimum": -90,
                        "type": "number"
                      },
                      "dest_lon": {
                        "description": "Destination longitude",
                        "examples": [
                          9.14,
                          10.32,
                          2.17
                        ],
                        "maximum": 180,
                        "minimum": -180,
                        "type": "number"
                      },
                      "dest_name": {
                        "description": "Destination name",
                        "minLength": 1,
                        "type": "string"
                      },
                      "distance_nm": {
                        "description": "Distance in nautical miles",
                        "type": "number"
                      },
                      "duration_hours": {
                        "description": "Estimated duration in hours",
                        "type": "number"
                      },
                      "geojson": {
                        "additionalProperties": {},
                        "description": "GeoJSON route geometry",
                        "propertyNames": {
                          "type": "string"
                        },
                        "type": "object"
                      },
                      "leg_order": {
                        "description": "Order in the itinerary",
                        "maximum": 100,
                        "minimum": 1,
                        "type": "integer"
                      },
                      "notes": {
                        "description": "Leg notes",
                        "type": "string"
                      },
                      "origin_lat": {
                        "description": "Origin latitude",
                        "examples": [
                          38.7,
                          43.55,
                          41.39
                        ],
                        "maximum": 90,
                        "minimum": -90,
                        "type": "number"
                      },
                      "origin_lon": {
                        "description": "Origin longitude",
                        "examples": [
                          9.14,
                          10.32,
                          2.17
                        ],
                        "maximum": 180,
                        "minimum": -180,
                        "type": "number"
                      },
                      "origin_name": {
                        "description": "Origin name",
                        "minLength": 1,
                        "type": "string"
                      },
                      "pois": {
                        "description": "Places associated with this leg",
                        "items": {
                          "properties": {
                            "note": {
                              "description": "Note about this stop",
                              "type": "string"
                            },
                            "place_id": {
                              "description": "Place id — full UUID or 8+ char hex prefix from nausika_search_places ([xxxxxxxx])",
                              "maxLength": 64,
                              "minLength": 8,
                              "type": "string"
                            },
                            "role": {
                              "description": "Role of this place in the leg",
                              "enum": [
                                "overnight",
                                "fuel",
                                "dining",
                                "waypoint"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "place_id",
                            "role"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "leg_order",
                      "origin_name",
                      "origin_lat",
                      "origin_lon",
                      "dest_name",
                      "dest_lat",
                      "dest_lon"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "name": {
                  "description": "Route name",
                  "examples": [
                    "Genova → Bastia 2026",
                    "Tour Corsica"
                  ],
                  "maxLength": 255,
                  "minLength": 1,
                  "type": "string"
                },
                "route_type": {
                  "description": "single leg or multi-leg itinerary",
                  "enum": [
                    "single",
                    "itinerary"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "action"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": {},
              "properties": {
                "action": {
                  "enum": [
                    "upsert",
                    "delete"
                  ],
                  "type": "string"
                },
                "id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "nausika_get_routes",
            "title": "Get Routes",
            "description": "Look up your saved sailing-route library: direct fetch by id, or paginated search by name fragment via query, with limit and offset for pagination.\n\nExamples:\n  - List all (defaults limit=20, offset=0): (no params)\n  - Detail by id: id=\"a1b2c3d4\" (8-char short-id or full UUID)\n  - Search: query=\"Corsica\", limit=10, offset=0\n  - Only itineraries: route_type=\"itinerary\"\n\nTip: feed leg coordinates into nausika_marine_forecast or nausika_tides to check conditions along the route.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Fetch single route — full UUID or 8+ char hex prefix from nausika_get_routes",
                  "examples": [
                    "550e8400-e29b-41d4-a716-446655440000",
                    "550e8400"
                  ],
                  "maxLength": 64,
                  "minLength": 8,
                  "type": "string"
                },
                "limit": {
                  "default": 20,
                  "description": "Max results, 1–50",
                  "examples": [
                    20
                  ],
                  "maximum": 50,
                  "minimum": 1,
                  "type": "integer"
                },
                "offset": {
                  "default": 0,
                  "description": "Offset for pagination",
                  "examples": [
                    0
                  ],
                  "maximum": 9007199254740991,
                  "minimum": 0,
                  "type": "integer"
                },
                "query": {
                  "description": "Search by name fragment, case-insensitive",
                  "examples": [
                    "Corsica",
                    "summer 2026"
                  ],
                  "type": "string"
                },
                "route_type": {
                  "description": "Filter by type",
                  "enum": [
                    "single",
                    "itinerary"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": {},
              "properties": {
                "id": {
                  "type": "string"
                },
                "legs": {
                  "items": {
                    "additionalProperties": {},
                    "propertyNames": {
                      "type": "string"
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "limit": {
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                },
                "name": {
                  "type": "string"
                },
                "offset": {
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                },
                "route_type": {
                  "type": "string"
                },
                "routes": {
                  "items": {
                    "additionalProperties": {},
                    "properties": {
                      "created_at": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "id": {
                        "type": "string"
                      },
                      "legs": {
                        "items": {
                          "additionalProperties": {},
                          "propertyNames": {
                            "type": "string"
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "name": {
                        "type": "string"
                      },
                      "route_type": {
                        "type": "string"
                      },
                      "updated_at": {
                        "type": "string"
                      },
                      "user_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          }
        ]
      },
      "name": "Nausika",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": null,
      "pageJsonUrl": "https://www.anchorterminal.com/tools/nausika-mcp.json",
      "popularity": {
        "githubStars": 1
      },
      "registryName": "app.nausika/mcp",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://mcp.nausika.app"
        }
      ],
      "repository": "https://github.com/nausika-app/nausika-feedback",
      "reviewed": false,
      "slug": "nausika-mcp",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=app.nausika/mcp",
      "summary": "Mediterranean marine, nautical, sailing: forecasts, tides, sea routes, anchorages, POIs for AI.",
      "updatedAt": "2026-05-19T06:32:26Z",
      "url": "https://www.anchorterminal.com/tools/nausika-mcp",
      "vendor": "nausika.app",
      "vendorUrl": "https://nausika.app",
      "version": "0.1.3",
      "websiteUrl": "https://nausika.app",
      "where": "hosted",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/nausika-mcp",
    "json": "https://www.anchorterminal.com/tools/nausika-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/nausika-mcp.md",
    "slim": "https://www.anchorterminal.com/tools/nausika-mcp.min.md"
  },
  "markdown": "# Nausika\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by nausika.app (https://nausika.app)\n- Category: Weather \u0026 climate data (https://www.anchorterminal.com/categories/weather.md)\n- Listed because: It's published in the registry under nausika.app, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Mediterranean marine, nautical, sailing: forecasts, tides, sea routes, anchorages, POIs for AI.\n\n## Facts\n\n- MCP registry: `app.nausika/mcp` 0.1.3\n- Endpoint: https://mcp.nausika.app (streamable HTTP)\n- Source: https://github.com/nausika-app/nausika-feedback\n- Website: https://nausika.app\n- GitHub stars: 1\n- Registry entry updated: 2026-05-19\n\n## Tools\n\n- Tools it lists (19, about 17,337 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-10-04 22:21 UTC):\n  - `nausika_marine_forecast` (read-only): Marine + atmospheric forecast at (latitude, longitude in decimal degrees). Returns waves, swell, currents, SST, wind, gusts, pressure, weather_code,…\n  - `nausika_seasonal_forecast` (read-only): Fetch 1-7 month ECMWF SEAS5 seasonal forecast for one Mediterranean point. Returns ensemble-mean DAILY + MONTHLY aggregates of wind, SST, temperature,…\n  - `nausika_tides` (read-only): Tide predictions or station discovery at a coordinate (latitude, longitude). Default: predictions from the nearest NOAA station; outside US waters falls back…\n  - `nausika_search_places` (read-only): Mediterranean nautical place search by proximity. latitude+longitude are ALWAYS required — this is not a standalone text search. 'query' is only a name filter…\n  - `nausika_get_place` (read-only): Fetch full detail for a single place given its 'id'. Accepts either a full UUID or the 8-char [xxxxxxxx] short-id shown by nausika_search_places. Returns…\n  - `nausika_sea_route` (read-only): Maritime routing via pgRouting Dijkstra on the MARNET sea-lane graph (Mediterranean only; errors out elsewhere), 6 kn sailing-yacht default, snaps land…\n  - `nausika_calculator` (read-only): Evaluate a math expression and return the numeric result. Useful for fuel, range/autonomy, unit conversions, and ad-hoc arithmetic. Supported (exhaustive): +,…\n  - `nausika_geocode` (read-only): Resolve a place 'query' to coordinates (forward) or find nearest places to 'latitude'+'longitude' (reverse). Mediterranean-focused curated DB; forward falls…\n  - `nausika_describe_place_schema` (read-only): Returns the expected attributes for a given place 'type' (the only input parameter: marina, port, bay, fuel_station, city, island, etc.). Useful to understand…\n  - `nausika_is_water` (read-only): Check whether a coordinate (latitude, longitude in decimal degrees) is on water or land, and how far it is from the coast. Returns: - is_water: boolean (true…\n  - `nausika_convert_coordinates` (read-only): Convert nautical coordinates between decimal degrees, DMS, and DM. Inputs: latitude, longitude — each accepts decimal (44.4), DMS (\"44°24'00\\\"N\"), or DM…\n  - `nausika_manage_boat_profile` (writes): Manage boat profile (multi-boat per account, keyed by name). Inputs: action, name, type, loa_m, beam_m, draft_m, displacement_kg, engine_type, engine_hp,…\n  - `nausika_get_boat_profile` (read-only): Get your saved boat profile(s). Omit name for the default boat, or use name=\"*\" to list all boats. Tip: use boat speed/consumption with nausika_sea_route and…\n  - `nausika_manage_favorite` (writes): Add or remove a place from your favorites list. Examples: - Add: action=\"add\", place_id=\"a1b2c3d4\", note=\"Great anchorage for overnight\" - Remove:…\n  - `nausika_get_favorites` (read-only): List your favorite places with details and personal notes. Ordered by most recently added. Inputs: limit, offset. Tip: use place coordinates with…\n  - `nausika_manage_rating` (writes): Rate a place (1-5 stars) with an optional private comment. One rating per user per place. Examples: - Rate: action=\"upsert\", place_id=\"a1b2c3d4\", score=4,…\n  - `nausika_get_ratings` (read-only): View ratings for a place (aggregate + your own) or list all your ratings. Inputs: place_id, my_only, limit, offset. Examples: - Place ratings:…\n  - `nausika_manage_route` (writes): Save a sailing route or multi-day itinerary; legs may link to places. Typical flow: compute legs with nausika_sea_route, then save here. Examples: - Single:…\n  - `nausika_get_routes` (read-only): Look up your saved sailing-route library: direct fetch by id, or paginated search by name fragment via query, with limit and offset for pagination. Examples: -…\n- How its tools read to an agent (0 errors, 3 warnings, 0 notes, about 17,337 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC22 nausika_marine_forecast: the definition is about 2,114 tokens\n  - warn TC22 nausika_search_places: the definition is about 2,112 tokens\n  - warn TC23 server: 19 tools, about 17,162 tokens of definitions\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/nausika-mcp.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "Nausika",
        "url": ""
      }
    ],
    "description": "Nausika, an MCP server by nausika.app, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Mediterranean marine, nautical, sailing: forecasts, tides, sea routes, anchorages, POIs for AI.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "Nausika",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/nausika-mcp",
    "published": "",
    "section": "indexed",
    "title": "Nausika: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/nausika-mcp"
  },
  "tokens": {
    "markdown": 1550,
    "slim": 1480
  },
  "version": 1
}
