Skip to main content
Glama

Find anchorages near a position, tonight or in a wind

find_anchorages
Read-onlyIdempotent

Lists the places near a position where boats stopped, overnight or by day, with where boats stayed in tonight's forecast there or in a given wind. For tonight, call it without wind_from and wind_kn: the answer then carries tonight's forecast at the position and each place's nights in each of tonight's winds, as the site's Tonight does. Give a wind only to ask about that wind. Each place comes with how far and which way it lies from the position (e.g. 0.5 NM SW), its nights, where it is, its page and its place on the map. With a wind, each place gets its nights in that wind, split by strength, with the gusts on those nights (kt), and the list is sorted by those nights. A wind is counted as the site counts it: its compass point at 10 or 20 kt or more, as the forecast's band (e.g. wind_kn 15 counts E 10 kt or more). wind_from alone counts the direction at any strength. Under 3 kt (wind_kn in whole knots) the wind has no settled direction, so every night counts. A night counts once, in the wind it blew from most. Tonight is counted as the site's Tonight counts it: tonight's forecast times that are night there, each counted in its compass point at 10 or 20 kt or more, as its band (every night under 3 kt), and each place's fewest nights in any one of them. Where a place faces open water and tonight's swell there is 0.5 m or more, the nights of that count that also had that swell are given beside it, as on the site. The swell never changes the count. Places with a night in every one of tonight's winds come first, by those fewest nights, then the rest. Without a forecast, by distance. Positions are WGS84 decimal degrees.

Input Schema

NameRequiredDescriptionDefault
latYesLatitude of the centre, WGS84 decimal degrees.
lonYesLongitude of the centre, WGS84 decimal degrees.
limitNoMost places to list, 10 when left out, at most 25.
wind_knNoMean wind speed in knots (kt). Needs wind_from. Under 3 kt as whole knots the direction counts for nothing, as on the site: every night counts.
radius_nmNoRadius of the circle in nautical miles, 15 when left out, at most 50.
wind_fromNoDirection the wind blows from: degrees true (0 to 360) or a point of the 16-point compass (N, NNE, NE ... NNW).

Output Schema

NameRequiredDescriptionDefault
noteYes
windYes
centerYes
placesYes
sourceYes
tonightYesTonight's forecast at the position, null when it isn't available.
radius_nmYes
places_in_radiusYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / places / items / properties / tonight / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "every_window": {
      -        "description": "Whether boats stayed here on some night in each of tonight's winds.",
      -        "type": "boolean"
      -      },
      -      "nights": {
      -        "description": "The fewest nights in any one of tonight's winds.",
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "weakest": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "from": {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "N",
      -                      "NE",
      -                      "E",
      -                      "SE",
      -                      "S",
      -                      "SW",
      -                      "W",
      -                      "NW"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "description": "Null when the wind asked is under 3 kt: no settled direction, so every night counts, as on the site."
      -              },
      -              "min_kt": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "from",
      -              "min_kt"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The wind those nights are counted in."
      -      },
      -      "weakest_swell": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "from": {
      -                "enum": [
      -                  "N",
      -                  "NE",
      -                  "E",
      -                  "SE",
      -                  "S",
      -                  "SW",
      -                  "W",
      -                  "NW"
      -                ],
      -                "type": "string"
      -              },
      -              "min_m": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "from",
      -              "min_m"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The forecast swell those nights are counted with, as on the site: its compass point and the height it is counted from, m (0.5, 1.25 or 2.5 m or more). Null: the wind alone (a sheltered place, or tonight's swell there under 0.5 m)."
      -      }
      -    },
      -    "required": [
      -      "nights",
      -      "weakest",
      -      "weakest_swell",
      -      "every_window"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "every_window": {
      +        "description": "Whether boats stayed here on some night in each of tonight's winds.",
      +        "type": "boolean"
      +      },
      +      "nights": {
      +        "description": "The fewest nights in any one of tonight's winds.",
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "weakest": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "from": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "N",
      +                      "NE",
      +                      "E",
      +                      "SE",
      +                      "S",
      +                      "SW",
      +                      "W",
      +                      "NW"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "Null when the wind asked is under 3 kt: no settled direction, so every night counts, as on the site."
      +              },
      +              "min_kt": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "from",
      +              "min_kt"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The wind those nights are counted in."
      +      },
      +      "with_swell": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "from": {
      +                "enum": [
      +                  "N",
      +                  "NE",
      +                  "E",
      +                  "SE",
      +                  "S",
      +                  "SW",
      +                  "W",
      +                  "NW"
      +                ],
      +                "type": "string"
      +              },
      +              "min_m": {
      +                "type": "number"
      +              },
      +              "nights": {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "from",
      +              "min_m",
      +              "nights"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Of those nights, the ones that also had tonight's forecast swell there in that time, as the site says it beside the count: the swell's compass point, the height it is counted from, m (0.5, 1.25 or 2.5 m or more), and the nights. Null: no swell to say (a place with no open water that side, tonight's swell there under 0.5 m, or no nights in that wind)."
      +      }
      +    },
      +    "required": [
      +      "nights",
      +      "weakest",
      +      "with_swell",
      +      "every_window"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / places / items / properties / tonight / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "every_window": {
      -        "description": "Whether boats stayed here on some night in each of tonight's winds.",
      -        "type": "boolean"
      -      },
      -      "nights": {
      -        "description": "The fewest nights in any one of tonight's winds.",
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "weakest": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "from": {
      -                "anyOf": [
      -                  {
      -                    "enum": [
      -                      "N",
      -                      "NE",
      -                      "E",
      -                      "SE",
      -                      "S",
      -                      "SW",
      -                      "W",
      -                      "NW"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "description": "Null when the wind asked is under 3 kt: no settled direction, so every night counts, as on the site."
      -              },
      -              "min_kt": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "from",
      -              "min_kt"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The wind those nights are counted in."
      -      }
      -    },
      -    "required": [
      -      "nights",
      -      "weakest",
      -      "every_window"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "every_window": {
      +        "description": "Whether boats stayed here on some night in each of tonight's winds.",
      +        "type": "boolean"
      +      },
      +      "nights": {
      +        "description": "The fewest nights in any one of tonight's winds.",
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "weakest": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "from": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "N",
      +                      "NE",
      +                      "E",
      +                      "SE",
      +                      "S",
      +                      "SW",
      +                      "W",
      +                      "NW"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "Null when the wind asked is under 3 kt: no settled direction, so every night counts, as on the site."
      +              },
      +              "min_kt": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "from",
      +              "min_kt"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The wind those nights are counted in."
      +      },
      +      "weakest_swell": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "from": {
      +                "enum": [
      +                  "N",
      +                  "NE",
      +                  "E",
      +                  "SE",
      +                  "S",
      +                  "SW",
      +                  "W",
      +                  "NW"
      +                ],
      +                "type": "string"
      +              },
      +              "min_m": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "from",
      +              "min_m"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The forecast swell those nights are counted with, as on the site: its compass point and the height it is counted from, m (0.5, 1.25 or 2.5 m or more). Null: the wind alone (a sheltered place, or tonight's swell there under 0.5 m)."
      +      }
      +    },
      +    "required": [
      +      "nights",
      +      "weakest",
      +      "weakest_swell",
      +      "every_window"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed5 schema fields changed
    • changedInput schema / properties / wind_kn / description
      Previous value: -"Mean wind speed in knots (kt). Needs wind_from."New value: +"Mean wind speed in knots (kt). Needs wind_from. Under 3 kt as whole knots the direction counts for nothing, as on the site: every night counts."
    • changedOutput schema / properties / places / items / properties / matching / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "gusts_kt": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "max": {
      -                "type": "number"
      -              },
      -              "min": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "min",
      -              "max"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Lowest and highest gust of the counted nights, kt."
      -      },
      -      "nights": {
      -        "description": "Nights boats stayed here in this wind: the site's number.",
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "nights_by_strength": {
      -        "additionalProperties": false,
      -        "description": "The nights split by the night's strongest wind from this direction, as the site's wedge for the direction. Adds up to nights.",
      -        "properties": {
      -          "from_10_to_20_kt": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "Null when the wind is counted at 20 kt or more."
      -          },
      -          "from_20_kt": {
      -            "maximum": 9007199254740991,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "under_10_kt": {
      -            "anyOf": [
      -              {
      -                "maximum": 9007199254740991,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "Null unless the wind is counted at any strength."
      -          }
      -        },
      -        "required": [
      -          "under_10_kt",
      -          "from_10_to_20_kt",
      -          "from_20_kt"
      -        ],
      -        "type": "object"
      -      },
      -      "wind": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "from": {
      -            "enum": [
      -              "N",
      -              "NE",
      -              "E",
      -              "SE",
      -              "S",
      -              "SW",
      -              "W",
      -              "NW"
      -            ],
      -            "type": "string"
      -          },
      -          "min_kt": {
      -            "type": "number"
      -          }
      -        },
      -        "required": [
      -          "from",
      -          "min_kt"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "wind",
      -      "nights",
      -      "nights_by_strength",
      -      "gusts_kt"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "gusts_kt": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "max": {
      +                "type": "number"
      +              },
      +              "min": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "min",
      +              "max"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Lowest and highest gust of the counted nights, kt."
      +      },
      +      "nights": {
      +        "description": "Nights boats stayed here in this wind: the site's number.",
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "nights_by_strength": {
      +        "additionalProperties": false,
      +        "description": "The nights split by the night's strongest wind from this direction, as the site's wedge for the direction. Adds up to nights.",
      +        "properties": {
      +          "from_10_to_20_kt": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Null when the wind is counted at 20 kt or more."
      +          },
      +          "from_20_kt": {
      +            "maximum": 9007199254740991,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "under_10_kt": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Null unless the wind is counted at any strength."
      +          }
      +        },
      +        "required": [
      +          "under_10_kt",
      +          "from_10_to_20_kt",
      +          "from_20_kt"
      +        ],
      +        "type": "object"
      +      },
      +      "wind": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "from": {
      +            "anyOf": [
      +              {
      +                "enum": [
      +                  "N",
      +                  "NE",
      +                  "E",
      +                  "SE",
      +                  "S",
      +                  "SW",
      +                  "W",
      +                  "NW"
      +                ],
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Null when the wind asked is under 3 kt: no settled direction, so every night counts, as on the site."
      +          },
      +          "min_kt": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "from",
      +          "min_kt"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "wind",
      +      "nights",
      +      "nights_by_strength",
      +      "gusts_kt"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / places / items / properties / tonight / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "every_window": {
      -        "description": "Whether boats stayed here on some night in each of tonight's winds.",
      -        "type": "boolean"
      -      },
      -      "nights": {
      -        "description": "The fewest nights in any one of tonight's winds.",
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "weakest": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "from": {
      -                "enum": [
      -                  "N",
      -                  "NE",
      -                  "E",
      -                  "SE",
      -                  "S",
      -                  "SW",
      -                  "W",
      -                  "NW"
      -                ],
      -                "type": "string"
      -              },
      -              "min_kt": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "from",
      -              "min_kt"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The wind those nights are counted in."
      -      }
      -    },
      -    "required": [
      -      "nights",
      -      "weakest",
      -      "every_window"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "every_window": {
      +        "description": "Whether boats stayed here on some night in each of tonight's winds.",
      +        "type": "boolean"
      +      },
      +      "nights": {
      +        "description": "The fewest nights in any one of tonight's winds.",
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "weakest": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "from": {
      +                "anyOf": [
      +                  {
      +                    "enum": [
      +                      "N",
      +                      "NE",
      +                      "E",
      +                      "SE",
      +                      "S",
      +                      "SW",
      +                      "W",
      +                      "NW"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "Null when the wind asked is under 3 kt: no settled direction, so every night counts, as on the site."
      +              },
      +              "min_kt": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "from",
      +              "min_kt"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The wind those nights are counted in."
      +      }
      +    },
      +    "required": [
      +      "nights",
      +      "weakest",
      +      "every_window"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / tonight / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "credit": {
      -        "additionalProperties": false,
      -        "description": "The forecast's credit. Show its text, linked to its url, wherever this forecast is shown.",
      -        "properties": {
      -          "text": {
      -            "const": "Weather data by Open-Meteo.com",
      -            "type": "string"
      -          },
      -          "url": {
      -            "const": "https://open-meteo.com/",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "text",
      -          "url"
      -        ],
      -        "type": "object"
      -      },
      -      "missing": {
      -        "description": "Tonight's forecast times without a wind.",
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "windows": {
      -        "description": "Tonight's 3-hour forecast times that are night at the position, in time order.",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "counted_in": {
      -              "additionalProperties": false,
      -              "description": "The wind its nights are counted in: its compass point at 10 or 20 kt or more, as its band.",
      -              "properties": {
      -                "from": {
      -                  "enum": [
      -                    "N",
      -                    "NE",
      -                    "E",
      -                    "SE",
      -                    "S",
      -                    "SW",
      -                    "W",
      -                    "NW"
      -                  ],
      -                  "type": "string"
      -                },
      -                "min_kt": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "from",
      -                "min_kt"
      -              ],
      -              "type": "object"
      -            },
      -            "from": {
      -              "description": "The forecast wind's compass point.",
      -              "enum": [
      -                "N",
      -                "NE",
      -                "E",
      -                "SE",
      -                "S",
      -                "SW",
      -                "W",
      -                "NW"
      -              ],
      -              "type": "string"
      -            },
      -            "mean_kt": {
      -              "description": "The forecast mean wind, whole kt.",
      -              "maximum": 9007199254740991,
      -              "minimum": -9007199254740991,
      -              "type": "integer"
      -            },
      -            "time": {
      -              "description": "The forecast time on the clock at the position, ISO with its offset.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "time",
      -            "from",
      -            "mean_kt",
      -            "counted_in"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "windows",
      -      "missing",
      -      "credit"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "credit": {
      +        "additionalProperties": false,
      +        "description": "The forecast's credit. Show its text, linked to its url, wherever this forecast is shown.",
      +        "properties": {
      +          "text": {
      +            "const": "Weather data by Open-Meteo.com",
      +            "type": "string"
      +          },
      +          "url": {
      +            "const": "https://open-meteo.com/",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "text",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "missing": {
      +        "description": "Tonight's forecast times without a wind.",
      +        "maximum": 9007199254740991,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "windows": {
      +        "description": "Tonight's 3-hour forecast times that are night at the position, in time order.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "counted_in": {
      +              "additionalProperties": false,
      +              "description": "The wind its nights are counted in: its compass point at 10 or 20 kt or more, as its band; no point under 3 kt.",
      +              "properties": {
      +                "from": {
      +                  "anyOf": [
      +                    {
      +                      "enum": [
      +                        "N",
      +                        "NE",
      +                        "E",
      +                        "SE",
      +                        "S",
      +                        "SW",
      +                        "W",
      +                        "NW"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "description": "Null when the wind asked is under 3 kt: no settled direction, so every night counts, as on the site."
      +                },
      +                "min_kt": {
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "from",
      +                "min_kt"
      +              ],
      +              "type": "object"
      +            },
      +            "from": {
      +              "description": "The forecast wind's compass point.",
      +              "enum": [
      +                "N",
      +                "NE",
      +                "E",
      +                "SE",
      +                "S",
      +                "SW",
      +                "W",
      +                "NW"
      +              ],
      +              "type": "string"
      +            },
      +            "mean_kt": {
      +              "description": "The forecast mean wind, whole kt.",
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            "time": {
      +              "description": "The forecast time on the clock at the position, ISO with its offset.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "time",
      +            "from",
      +            "mean_kt",
      +            "counted_in"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "windows",
      +      "missing",
      +      "credit"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / wind / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "from": {
      -        "enum": [
      -          "N",
      -          "NE",
      -          "E",
      -          "SE",
      -          "S",
      -          "SW",
      -          "W",
      -          "NW"
      -        ],
      -        "type": "string"
      -      },
      -      "min_kt": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "from",
      -      "min_kt"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "from": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "N",
      +              "NE",
      +              "E",
      +              "SE",
      +              "S",
      +              "SW",
      +              "W",
      +              "NW"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Null when the wind asked is under 3 kt: no settled direction, so every night counts, as on the site."
      +      },
      +      "min_kt": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "from",
      +      "min_kt"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. First observed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, closed-world safety profile, and the description goes well beyond that by disclosing sorting order, tie-breaking, the 3 kt no-direction rule, and that swell is reported but never affects the count. The disclosure is unusually rich, though its density makes it hard to apply reliably on a first read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a ~330-word run-on with repeated deferrals to 'as on the site' and 'as the site's Tonight does' instead of stating the rule once. The critical call-shape instruction ('call it without wind_from and wind_kn') is buried in the middle rather than front-loaded next to the opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with six parameters and intricate ranking semantics, the description covers modes, counting rules, and result ordering, and an output schema exists so return-shape explanation is not required. Its remaining gap is not missing information but presentational: the rules are there, just hard to extract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description earns above that by explaining the non-obvious semantics of wind_kn and wind_from that the schema cannot express (e.g. wind_kn 15 counts E 10 kt or more; wind_from alone counts direction at any strength). It does not add anything for radius_nm or limit, which the schema already handles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource ('Lists the places near a position where boats stopped, overnight or by day') and states the two query modes, which is far more than the title alone conveys. It does not explicitly distinguish itself from siblings like get_climatology or get_bay_evidence, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete routing rules for its own modes: 'For tonight, call it without wind_from and wind_kn' versus 'Give a wind only to ask about that wind', plus the dependency 'wind_kn needs wind_from'. What is missing is any statement of when to prefer this over the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources