{
  "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"
  },
  "tool": {
    "category": "",
    "endpoint": "https://mcp.ohmywind.fr/mcp",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/ohmywind-sailing-planner.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/ohmywind-sailing-planner.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/ohmywind-sailing-planner.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 3841,
        "counts": {
          "error": 0,
          "note": 2,
          "warn": 3
        },
        "findings": [
          {
            "rule": "TC07",
            "severity": "warn",
            "tool": "plan_passage",
            "message": "the description is about 2,629 tokens",
            "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "plan_passage",
            "message": "3 parameters without a description: latest_departure, sweep_interval_hours, target_eta",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC22",
            "severity": "warn",
            "tool": "plan_passage",
            "message": "the definition is about 3,075 tokens",
            "fix": "Trim the description and parameter docs, or split the tool."
          },
          {
            "rule": "TC11",
            "severity": "note",
            "tool": "get_marine_forecast",
            "message": "parameters are documented in the description but not in the schema: end, lat, lon, models, start",
            "fix": "Put each one in its property's description (in Python: Annotated[str, Field(description=...)])."
          },
          {
            "rule": "TC11",
            "severity": "note",
            "tool": "plan_passage",
            "message": "parameters are documented in the description but not in the schema: archetype, departure, efficiency, max_hs_m, min_upwind_twa_deg, model and 4 more",
            "fix": "Put each one in its property's description (in Python: Annotated[str, Field(description=...)])."
          }
        ]
      },
      "checkedAt": "2026-10-04T22:25:05Z",
      "count": 4,
      "schemaTokens": 3841,
      "status": "ok",
      "tools": [
        {
          "name": "read_me",
          "description": "Return OhMyWind's calculation methodology as Markdown.\n\n        Call this when the user asks how passage timing, complexity, or\n        boat speed are computed (e.g. \"comment c'est calculé ?\",\n        \"what assumptions does the model use?\", \"is tacking modelled?\").\n\n        The returned text covers: polar lookup, default efficiency 0.75,\n        VMG / tacking correction, wave derate, single-pass timing,\n        compare-windows mode semantics, Mediterranean simplifications\n        (tides, currents), and what is intentionally NOT modelled in V1.\n        ",
          "inputSchema": {
            "properties": {},
            "title": "read_meArguments",
            "type": "object"
          },
          "outputSchema": {
            "properties": {
              "result": {
                "title": "Result",
                "type": "string"
              }
            },
            "required": [
              "result"
            ],
            "title": "read_meOutput",
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Calculation method"
          }
        },
        {
          "name": "list_boat_archetypes",
          "description": "List the 7 boat archetypes with descriptive metadata.\n\n        The LLM (or user) maps a commercial model (e.g. \"Sun Odyssey 32\") to one\n        of these archetypes from the metadata — there is no server-side mapping.\n        ",
          "inputSchema": {
            "properties": {},
            "title": "list_boat_archetypesArguments",
            "type": "object"
          },
          "outputSchema": {
            "properties": {
              "result": {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "title": "Result",
                "type": "array"
              }
            },
            "required": [
              "result"
            ],
            "title": "list_boat_archetypesOutput",
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false,
            "readOnlyHint": true,
            "title": "Boat archetypes"
          }
        },
        {
          "name": "get_marine_forecast",
          "description": "Fetch wind (and sea, when available) for a point and time window.\n\n        Args:\n            lat: latitude in degrees.\n            lon: longitude in degrees.\n            start: ISO-8601 datetime, timezone-aware (e.g. \"2026-05-01T06:00:00+00:00\").\n            end: ISO-8601 datetime, timezone-aware.\n            models: optional list of model names; defaults to AROME for the Med.\n\n        Pass a point at sea. Over land Open-Meteo still returns wind, but\n        every sea value comes back null, so the ``sea`` array is present and\n        empty of information rather than absent.\n\n        Note: the first request after inactivity may incur ~5s of cold-start.\n\n        ",
          "inputSchema": {
            "properties": {
              "end": {
                "title": "End",
                "type": "string"
              },
              "lat": {
                "title": "Lat",
                "type": "number"
              },
              "lon": {
                "title": "Lon",
                "type": "number"
              },
              "models": {
                "anyOf": [
                  {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Models"
              },
              "start": {
                "title": "Start",
                "type": "string"
              }
            },
            "required": [
              "lat",
              "lon",
              "start",
              "end"
            ],
            "title": "get_marine_forecastArguments",
            "type": "object"
          },
          "outputSchema": {
            "additionalProperties": true,
            "title": "get_marine_forecastDictOutput",
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Marine forecast"
          }
        },
        {
          "name": "plan_passage",
          "description": "(not repeated here: it reads like a rating or a usage claim)",
          "inputSchema": {
            "properties": {
              "archetype": {
                "title": "Archetype",
                "type": "string"
              },
              "departure": {
                "title": "Departure",
                "type": "string"
              },
              "efficiency": {
                "default": 0.75,
                "title": "Efficiency",
                "type": "number"
              },
              "latest_departure": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Latest Departure"
              },
              "max_hs_m": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Max Hs M"
              },
              "min_upwind_twa_deg": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Min Upwind Twa Deg"
              },
              "model": {
                "default": "auto",
                "title": "Model",
                "type": "string"
              },
              "motor_speed_kn": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Motor Speed Kn"
              },
              "motor_threshold_kn": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Motor Threshold Kn"
              },
              "segment_length_nm": {
                "default": 10,
                "title": "Segment Length Nm",
                "type": "number"
              },
              "sweep_interval_hours": {
                "default": 1,
                "title": "Sweep Interval Hours",
                "type": "integer"
              },
              "target_eta": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Target Eta"
              },
              "waypoints": {
                "items": {
                  "additionalProperties": {
                    "type": "number"
                  },
                  "type": "object"
                },
                "title": "Waypoints",
                "type": "array"
              }
            },
            "required": [
              "waypoints",
              "departure",
              "archetype"
            ],
            "title": "plan_passageArguments",
            "type": "object"
          },
          "outputSchema": {
            "additionalProperties": true,
            "title": "plan_passageDictOutput",
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true,
            "readOnlyHint": true,
            "title": "Plan a passage"
          }
        }
      ]
    },
    "name": "OhMyWind",
    "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/ohmywind-sailing-planner.json",
    "popularity": {
      "githubStars": 10
    },
    "registryName": "fr.ohmywind/sailing-planner",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://mcp.ohmywind.fr/mcp"
      }
    ],
    "repository": "https://github.com/qdonnars/ohmywind",
    "reviewed": false,
    "slug": "ohmywind-sailing-planner",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=fr.ohmywind/sailing-planner",
    "summary": "Sailing passage planner for any coast, with high-precision tides on the French Atlantic.",
    "updatedAt": "2026-08-01T23:15:02Z",
    "url": "https://www.anchorterminal.com/tools/ohmywind-sailing-planner",
    "vendor": "ohmywind.fr",
    "vendorUrl": "https://ohmywind.fr",
    "version": "1.0.1",
    "websiteUrl": "https://ohmywind.fr",
    "where": "hosted",
    "why": [
      "vendor"
    ]
  }
}
