FernWX Lab Mode is a Research Preview, and can be disabled at any time. New sessions will default to the standard FernWX experience.FernWXLab

For developers and AI agents

Connect an agent to FernWX

FernWX keeps every forecast it collects, from many providers, and checks them against what actually happened. The documented account reads are available over two transports that share one contract: a remote MCP server and a REST Agent API described by OpenAPI 3.1. Both enforce your account permissions. Every documented operation and MCP tool is a read. Some reads update last-seen timestamps or stale report state, and saved-insight runs append query activity logs; MCP tools declare these side effects.

MCP server (Streamable HTTP)
https://fernwx.com/api/mcp
OpenAPI document
https://fernwx.com/api/openapi.json
Documented read operations
84 GET operations, 85 MCP tools
Contract snapshot
0.1.0+84.27e39098
Model Context Protocol

The FernWX MCP server

https://fernwx.com/api/mcp serves the Agent API over MCP (JSON-RPC over Streamable HTTP). Add it as a remote connector in any MCP host: Claude (claude.ai custom connectors, Claude Desktop, Claude Code), ChatGPT connectors, Cursor, and others.

Every documented GET operation is one tool (84 in all), plus fernwx_whoami, which reports the connected account and the tool list. Tool names come from the OpenAPI operation ids, for example fernwx_get_forecast, fernwx_get_alerts, fernwx_resolve_location, fernwx_memory_moment and fernwx_forecast_verification. tools/list is the complete catalog.

Hosts that discover credentials (claude.ai, ChatGPT)

Paste the URL into the host's “add custom connector” dialog. The host runs the OAuth 2.1 flow below: you sign in to FernWX, approve the connector, and it receives an ordinary account key.

Hosts that send a header (Claude Code, scripts)

claude mcp add --transport http fernwx https://fernwx.com/api/mcp --header "Authorization: Bearer fwx_YOUR_KEY"
REST + OpenAPI 3.1

The Agent API

The same reads are plain HTTPS GETs under /api/weather-ledger/, selected /api/account/ read models, and /api/public/forecast. The contract is generated from the registered schemas and checked against the MCP tool catalog. Every operation has an operationId, so it imports cleanly as a GPT Action or into any OpenAPI client.

curl -H "Authorization: Bearer fwx_YOUR_KEY" \
  "https://fernwx.com/api/weather-ledger/forecast/latest?locationId=YOUR_SAVED_LOCATION"

/api/public/forecast is the keyless live-weather REST route: a public forecast lookup by place name or coordinates, rate-limited per IP. Other weather routes may return HTTP 200 synthetic examples when authentication is omitted. Always check example; never report a response withexample: true as live or account weather.

Interactive API reference Download the OpenAPI document

Authentication

Account API keys and OAuth

Keyed routes take a per-account bearer key, Authorization: Bearer fwx_<prefix>_<secret>. Create one under Account → API keys. The default lifetime is one hour; requested lifetimes range from five minutes to 30 days. Legacy keys without an expiry remain non-expiring. Keys can be renewed or revoked there. An expired, revoked or unknown key gets 401 with a machine-readable code (api_key_expired, api_key_revoked, api_key_invalid), never substitute example data.

FernWX is also its own OAuth 2.1 authorization server for MCP hosts: dynamic client registration (RFC 7591) and Client ID Metadata Documents, PKCE S256, a signed-in consent page, and rotating refresh tokens. The access token it issues is a fwx_ key named oauth:<client>, so each connected host appears in your API keys list and can be revoked there. Scopes: weather-ledger:read and public:read. Scope names are stored, not yet enforced as tool-level limits. A token can access all documented reads allowed by its owning account; requesting only public:read does not restrict it to public tools.

Boundaries

What agents can and cannot do

  • Read the account's saved locations, forecast memory, verification, observations, alerts, storms, upper-air soundings, tropical cyclones and saved reports.
  • Every documented operation and MCP tool is a read. Some reads update last-seen timestamps or stale report state, and saved-insight runs append query activity logs; MCP tools declare these side effects.
  • A key or OAuth token is not read-only. It can also call account routes outside the documented contract that write: generate and save AI explanations of soundings and NWS text products and sounding comparison syntheses (these count against the account’s AI usage limits), generate speech audio, import radiosonde soundings into the account (overwrite mode replaces the account’s own earlier imports), and request or release temporary restores of archived days. Each is limited to the owning account and bounded. It cannot change locations, settings or keys, trigger collectors, create or edit saved reports, Run Books, dashboards or insights, or delete the cold archive. There are no admin routes.
  • No database access and no arbitrary SQL.
  • Forecast memory is immutable. AI-written synthesis is never returned as observed truth.

The Research Lab (Forecast Ledger Intelligence) is a separate thing: FernWX's own built-in agent, which plans investigations and runs guarded, read-only queries for signed-in users. External agents reach the ledger through the MCP server or the Agent API above.

Machine-readable discovery

Where agents can look

New to FernWX? The Knowledge Base explains forecast memory, verification and the data sources behind every read.