OhMyWind
Server Details
Sailing passage planner for any coast, with high-precision tides on the French Atlantic.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- qdonnars/ohmywind
- GitHub Stars
- 5
- Server Listing
- OhMyWind
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 4 of 4 tools scored.
Each tool has a clearly distinct purpose: point weather forecast, boat archetype listing, passage planning, and methodology documentation. The plan_passage description even includes explicit routing rules to avoid confusion with get_marine_forecast.
All tool names follow a consistent verb_noun pattern in snake_case: get_marine_forecast, list_boat_archetypes, plan_passage, read_me. The idiom read_me is a minor variation but still fits the imperative verb style.
Four tools is well within the ideal 3-15 range and perfectly scoped for a specialized sailing weather service. Each tool covers an essential aspect of the domain without redundancy or bloat.
The tool surface fully covers the core workflow: get weather at a point, list boat archetypes for planning, plan a passage (including multi-window comparison), and read methodology. The intentional omissions (tides, currents) are documented rather than gaps.
Available Tools
4 toolsget_marine_forecastARead-onlyInspect
Fetch wind (and sea, when available) for a point and time window.
Args:
lat: latitude in degrees.
lon: longitude in degrees.
start: ISO-8601 datetime, timezone-aware (e.g. "2026-05-01T06:00:00+00:00").
end: ISO-8601 datetime, timezone-aware.
models: optional list of model names; defaults to AROME for the Med.
Note: the first request after inactivity may incur ~5s of cold-start.| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| lat | Yes | ||
| lon | Yes | ||
| start | Yes | ||
| models | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds meaningful behavioral context: the cold-start delay, the 'when available' caveat for sea data, and the default model (AROME for the Med). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, followed by a compact Args section and a note. Every sentence adds value, though the Args block could be slightly more terse. Overall well-structured and not overlong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers inputs, defaults, and a behavioral caveat. An output schema exists, so return values need not be described. It lacks explicit mention of output format, but that is supplied by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by explaining each parameter: latitude/longitude in degrees, ISO-8601 timezone-aware datetimes with an example, and the optional models list with a default. This goes well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Fetch wind (and sea, when available)') on a specific resource (marine forecast) for a point and time window. This distinguishes it from siblings like 'list_boat_archetypes' and 'plan_passage'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (for point/time forecasts) but does not explicitly mention when not to use it or mention alternatives. It provides context like default model and cold-start, but no direct comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_boat_archetypesARead-onlyInspect
List the 7 boat archetypes with descriptive metadata.
The LLM (or user) maps a commercial model (e.g. "Sun Odyssey 32") to one of these archetypes from the metadata — there is no server-side mapping.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true and openWorldHint=false. The description adds the concrete number of archetypes (7) and the critical behavioral detail that mapping is client-side and not performed by the server. This enriches the agent's understanding beyond the annotation flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences. The first is a direct, front-loaded declaration of the tool's function. The second provides essential context without unnecessary words. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple fixed-list read with no parameters and an output schema present. The description covers the tool's purpose, the data it returns (7 archetypes with metadata), and the client-side mapping responsibility. Since the output schema exists, return field details don't need to be in the description. Fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema is trivially covered at 100%. The description adds no parameter-level detail (none needed), so the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List the 7 boat archetypes with descriptive metadata' – a specific verb (List), a precise resource (7 boat archetypes), and the outcome (descriptive metadata). It clearly differentiates from siblings like get_marine_forecast and plan_passage, which serve different marine planning functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives direct usage guidance: the LLM/user maps a commercial model to an archetype from the metadata, and there is no server-side mapping. This tells the agent when to use the tool (to obtain archetype data for client-side mapping) and what not to expect (no server-side mapping). However, it doesn't name explicit alternatives or exclusion cases, so it's slightly below the top bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_passageARead-onlyInspect
Plan an A→B passage. Compare departure windows by default; pin a single departure only when the user gives an explicit time.
## Tool routing — read this first
Before calling, classify the user's question:
1. **Pure weather lookup at a point** ("y aura-t-il du vent à Cassis
samedi à 14h ?", "quelles vagues dimanche au cap Sicié ?") — call
``get_marine_forecast`` and answer in text. Do NOT call
``plan_passage``: there's no route to plan.
2. **Trajet question with a flexible date** ("Marseille → Porquerolles
ce week-end", "demain ou après-demain", "dans les prochains jours")
— call ``plan_passage`` in **compare-windows mode**: pass
``latest_departure`` (e.g. earliest+48h) and ``sweep_interval_hours``
(3 or 6 typically) so the user sees several departure scenarios
side-by-side. Then pick 2-3 good ones and let the user choose.
This is the **default** for trajet planning — same API cost as a
single passage thanks to cache prewarm, much more value.
3. **Trajet with a precise hour pinned by the user** ("je pars demain
à 8h", "départ Saturday 9am") — call ``plan_passage`` in single
mode (no ``latest_departure``). Used for the final "show me the
detailed plan for THIS departure" view, often after step 2.
4. **Methodology question** ("comment c'est calculé ?",
"quelle efficacité par défaut ?") — call ``read_me``.
Rule of thumb: if the user does NOT give an exact hour, prefer
compare-windows. The widget renders one of the windows by default
and the chat lets the user pick another.
## Returned payload
Single mode:
- ``passage``: per-segment timing report (distance_nm, duration_h,
model used, segments[] with TWS/TWA/boat_speed/Hs, warnings).
- ``complexity``: 1-5 difficulty score with wind/sea breakdown and a
human-readable rationale.
- ``openwind_url``: deep-link to ohmywind.fr/plan that renders the
same passage in the standalone web app.
Compare-windows mode (``latest_departure`` set):
- ``mode``: ``"multi_window"``.
- ``sweep``: ``earliest`` / ``latest`` / ``interval_hours`` /
``window_count``.
- ``windows[]``: each entry has ``departure``, ``arrival``,
``duration_h``, ``distance_nm``, ``complexity`` (level + label +
rationale), ``conditions_summary`` (tws_min/max, predominant sail
angle, hs_min/max), ``warnings``, ``passage`` (full per-segment
report), ``complexity_full`` (full score), ``openwind_url``.
- ``meta_warnings``: top-level notes ("3 fenêtres ignorées …").
## How it renders
On hosts that support MCP Apps (Claude, Claude Desktop, ChatGPT, VS
Code Copilot, Goose, Postman, MCPJam), the response is automatically
accompanied by an interactive widget — the live ohmywind.fr/plan view
served via the ``ui://openwind/plan-passage`` resource declared on
this tool's ``_meta``. The widget reads ``openwind_url`` from the
structured output and embeds the matching plan view as an iframe.
On hosts without MCP Apps support (Cursor, Le Chat, terminal), present
a short text summary of the result (route, ETA, complexity, warnings)
and offer ``openwind_url`` as the "View full plan →" link.
## ALWAYS include the openwind_url(s) in your text reply
Even when the widget renders inline, the user wants the link spelled
out so they can open the full app, share it, or bookmark it. Treat
this as a hard requirement, not a fallback:
- **Single mode**: end your reply with a Markdown link built from the
``openwind_url`` field, e.g. ``[Voir le plan détaillé →](<openwind_url>)``.
Always use that value verbatim, never a URL you compose yourself: it
points at the environment this server is configured for, which is not
always the production site.
- **Compare-windows mode**: list 2-4 of the most relevant windows
and give each its own link, e.g.
``- Sam 2 mai 09h · 11h12 · ⚡2/5 — [voir →](url)``.
The user picks one from the chat, not the widget.
Phrase the link with intent ("voir le plan détaillé", "ouvrir cette
fenêtre dans l'app"), not just a bare URL — the user should know
what clicking does.
## Args
waypoints: list of ``{"lat": ..., "lon": ...}`` dicts (>=2). Caller
keeps the polyline off land — add intermediate waypoints to
skirt capes and peninsulas.
departure: ISO-8601 datetime, timezone-aware.
archetype: one of ``list_boat_archetypes()`` names.
efficiency: multiplier on polar speed. ``0.85`` racing, ``0.75``
cruising (default), ``0.65`` loaded family cruising, ``0.55``
heavy seas / fouled hull.
segment_length_nm: target sub-segment length. Default 10 nm
balances precision vs Open-Meteo budget; drop to 5 for tight
coastal work, raise to 20 for long offshore legs.
model: wind model. Default ``"auto"`` tries AROME (≤48 h) →
ICON-EU (≤5 d) → ECMWF IFS 0.25° (≤10 d) → GFS (≤16 d).
Pass an explicit name to bypass.
max_hs_m: optional max significant wave height (meters) over the
route — pass it if you have a sea-state estimate from
``get_marine_forecast`` and want it factored into the score.
Defaults to wind-only scoring.
motor_threshold_kn: optional sail-speed floor (knots) under which
the simulator switches to engine power. Must be paired with
``motor_speed_kn`` (either alone is ignored). Typical value
2 kn — sailors fire up the engine rather than crawl in light
wind. Leave unset for 100% sail. Range (0, 10].
motor_speed_kn: optional speed under engine (knots) applied to
segments where the sail estimate falls under
``motor_threshold_kn``. Typical 5-6 kn for a cruising boat.
Range (0, 12].
## Compare-windows mode (latest_departure set)
When ``latest_departure`` is provided, the tool switches into a
window-comparison call: it walks departure times from ``departure``
up to ``latest_departure`` every ``sweep_interval_hours`` (default
1 h). Returns ``{"mode": "multi_window", "sweep": {...}, "windows":
[...]}`` instead of the single-passage payload. Each window contains
``departure``, ``arrival``, ``duration_h``, ``distance_nm``,
``complexity``, ``conditions_summary``, ``warnings``, and its own
``openwind_url``.
``target_eta``: optional ISO-8601 datetime. When set, only windows that
arrive within ±2 h of the target are returned. If none match, all
windows are returned with a ``meta_warnings`` note.
## Failure modes
Raises ``ForecastHorizonError`` if the chosen model's horizon doesn't
cover the passage and ``model != "auto"``. The error message names the
failing model and suggests longer-range alternatives.| Name | Required | Description | Default |
|---|---|---|---|
| model | No | auto | |
| max_hs_m | No | ||
| archetype | Yes | ||
| departure | Yes | ||
| waypoints | Yes | ||
| efficiency | No | ||
| target_eta | No | ||
| motor_speed_kn | No | ||
| latest_departure | No | ||
| segment_length_nm | No | ||
| motor_threshold_kn | No | ||
| sweep_interval_hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the readOnlyHint/openWorldHint annotations. It discloses both operation modes (single and multi_window), the rendering differences across hosts (MCP Apps vs bare terminal), the hard requirement to always include openwind_url in text replies, the ForecastHorizonError failure mode, and details like target_eta's ±2h window with meta_warnings. All behavioral traits are transparent and consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but tightly structured with clear headings: 'Tool routing', 'Returned payload', 'How it renders', 'ALWAYS include', 'Args', 'Compare-windows mode', and 'Failure modes'. Each section serves a distinct purpose, and the most critical routing information is front-loaded. Every sentence adds value; nothing feels redundant or extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 params, two modes, output schema, widget integration, error handling), the description is remarkably complete. It covers tool routing vs siblings, both modes and their return payloads, parameter semantics, rendering behavior on different hosts, URL output requirements, and failure modes. It also explains the widget via ui:// resource and clarifies that openwind_url must be used verbatim. The output schema's richness is complemented, not duplicated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the 'Args' section describes all 12 parameters with defaults, ranges, examples, and pairing constraints (e.g., motor_threshold_kn must be paired with motor_speed_kn). It explains waypoints as lat/lon dicts, efficiency as a polar multiplier with example values, model fallback chain ('auto' tries AROME → ICON-EU → ECMWF → GFS), and compare-windows parameters (latest_departure, sweep_interval_hours, target_eta). The description fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Plan an A→B passage' and immediately distinguishes two modes: compare departure windows by default, pin a single departure when an explicit time is given. The 'Tool routing' section explicitly names sibling tools (get_marine_forecast, read_me) and states when NOT to call this tool, making purpose and scope crystal clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A dedicated 'Tool routing — read this first' section classifies the user's question into four numbered scenarios, each with the correct tool call and mode (compare-windows vs single). It includes a rule of thumb ('if the user does NOT give an exact hour, prefer compare-windows'), provides concrete examples in French, and explicitly references alternative tools. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_meARead-onlyInspect
Return OhMyWind's calculation methodology as Markdown.
Call this when the user asks how passage timing, complexity, or
boat speed are computed (e.g. "comment c'est calculé ?",
"what assumptions does the model use?", "is tacking modelled?").
The returned text covers: polar lookup, default efficiency 0.75,
VMG / tacking correction, wave derate, single-pass timing,
compare-windows mode semantics, Mediterranean simplifications
(tides, currents), and what is intentionally NOT modelled in V1.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows it is a safe read. The description adds value by enumerating exactly which aspects of the methodology are covered (polar lookup, efficiency, VMG/tacking, wave derate, etc.) and explicitly notes what is intentionally NOT modeled. This goes beyond annotation basics and gives useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but information-dense. First sentence states purpose, second provides usage guidance with examples, third lists the coverage topics. Each sentence earns its place, and the bullet-like enumeration is easy to parse. No redundant phrasing or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple nature (no params, read-only, returns Markdown), the description is complete: it states what it returns, when to use it, and what content to expect. The presence of an output schema also means return values don't need deep explanation. There is no ambiguity about scope or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is trivially 100% (empty properties). With no parameters to describe, the baseline is 4. The description does not need to add parameter details, and it doesn't. This is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Return OhMyWind's calculation methodology as Markdown.' This clearly distinguishes the tool from siblings like plan_passage or get_marine_forecast, which serve different purposes. The scope is precise: covering calculation methodology, not operational data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call the tool ('Call this when the user asks how passage timing, complexity, or boat speed are computed') and gives concrete example queries. It does not name alternatives or explicitly state when-not-to-use, but the context is clear enough that an agent can infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Flicense-qualityDmaintenanceTurns your Garmin watch into a sailing analytics tool by combining GPS data from Garmin Connect with historical weather data, providing insights like speed, VMG, wind conditions, and interactive maps.Last updated2
- Alicense-qualityCmaintenanceA fully MCP-compliant, open-source maritime data service that provides real-time vessel tracking, port information, route planning, and weather/tide data for maritime applications.Last updated13MIT
- AlicenseAqualityCmaintenanceMCP server for wind forecasts, live measurements, wave forecasts, and tides, enabling kite and surf spot checks via AI assistants.Last updated513MIT
- Alicense-qualityCmaintenanceProvides real-time maritime weather data, tropical cyclone warnings, and route calculations for AI agents.Last updatedMIT
Your Connectors
Sign in to create a connector for this server.