{
  "data": {
    "a": {
      "slug": "pirate-weather",
      "name": "Pirate Weather",
      "vendor": "Pirate Weather",
      "vendorUrl": "https://pirateweather.net",
      "kind": "http-api",
      "category": "weather",
      "summary": "Open-source weather API with Dark Sky-compatible responses, forecasts, alerts and historical data from public weather models.",
      "url": "https://www.anchorterminal.com/tools/pirate-weather",
      "markdownUrl": "https://www.anchorterminal.com/tools/pirate-weather.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pirate-weather.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pirate-weather.json",
      "repo": "https://github.com/Pirate-Weather/pirateweather",
      "license": "Apache-2.0 (docs and spec), AGPL-3.0 (API code)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.pirateweather.net/forecast",
      "packages": [],
      "auth": "api-key",
      "authNotes": "The key is a path segment, /forecast/{key}/{lat},{lon}, or an apikey request header with any placeholder in the path. The MCP server takes the same key as the apikey query parameter on its URL. Keys are issued through an Apiable portal at pirate-weather.apiable.io and can take up to 20 minutes to go live.",
      "pricing": "freemium",
      "pricingNotes": "Free at 10,000 calls a month. A $2 a month plan raises that to 20,000, and GitHub Sponsors takes one-off donations. Higher plans are sold through pirate-weather.apiable.io, which renders only with JavaScript, so we couldn't read them (https://pirateweather.net/en/latest/).",
      "priceSummary": "$2 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 907,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://pirateweather.net/en/latest/API/",
      "openapi": "https://github.com/Pirate-Weather/pirateweather/blob/main/PW_OpenAPI.yaml",
      "capabilities": [
        "weather.current",
        "weather.forecast",
        "weather.historical",
        "weather.alerts",
        "data.weather"
      ],
      "tags": [
        "hosted",
        "open-source",
        "freemium",
        "free-tier",
        "no-card",
        "mcp",
        "openapi",
        "status-page"
      ],
      "lastRelease": "2026-09-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.9,
        "grade": "B",
        "agentReady": false,
        "rank": 249,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 77,
          "maintenance": 80,
          "payments": 30,
          "reliability": 75,
          "schema": 85,
          "security": 45,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Named model sources and a documented priority order for every field. No SLA, and the terms call it best effort.",
        "bestFor": "Agents and apps that want Dark Sky-shaped forecasts, model transparency and deep history on a small budget.",
        "strengths": [
          "Named model sources and a documented priority order for every field",
          "OpenAPI 3.1 spec at version 2.10.2 and a dated changelog with a pull request per change",
          "Four releases between 9 July and 23 September 2026",
          "ERA5 history to January 1940 and URMA for the last 10 days in North America",
          "Response-sizing parameters that cut a forecast to the blocks and rows asked for"
        ],
        "weaknesses": [
          "No SLA, and the terms call it best effort",
          "Key in the URL path by default, and only in the query string for the MCP server",
          "Plans above $2 a month sit behind a JavaScript-only portal, and signup needs a person",
          "No security.txt, SECURITY.md or MCP registry entry",
          "The privacy notice and terms are generator templates from 2024 and say nothing on data reuse"
        ],
        "agentNotes": [
          "Send the key in an apikey header and put a placeholder in the path so it stays out of logs",
          "Pass blocks= and hourly_indices= or daily_indices= to get only the rows you need. The default payload is large",
          "Ask for version=2 to get fields Dark Sky never had, such as smoke, fire index and the source list",
          "Point historical requests at timemachine.pirateweather.net with a UNIX timestamp after the coordinate",
          "Watch Ratelimit-Remaining. The cap is monthly, so a runaway loop can spend it in a day"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.9
          }
        ],
        "editorialScores": {
          "ergonomics": 77,
          "maintenance": 80,
          "payments": 30,
          "reliability": 75,
          "schema": 85,
          "security": 45,
          "transparency": 55
        },
        "provenanceScore": 80,
        "dataQualityScore": 72
      },
      "connect": {
        "http": "curl -H \"apikey: $PIRATE_WEATHER_API_KEY\" \"https://api.pirateweather.net/forecast/key/51.51,-0.13?units=si\u0026exclude=minutely\u0026version=2\"",
        "claudeCode": "claude mcp add --transport http pirate-weather \"https://mcp.pirateweather.net/mcp?apikey=$PIRATE_WEATHER_API_KEY\"",
        "config": {
          "mcpServers": {
            "pirate-weather": {
              "type": "http",
              "url": "https://mcp.pirateweather.net/mcp?apikey=${PIRATE_WEATHER_API_KEY}"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/weather.current",
        "tool": "https://letme.dev/pirate-weather"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Supporter plan",
          "unit": "month",
          "usd": 2,
          "note": "20,000 calls a month"
        },
        {
          "item": "Call on the Supporter plan, at the cap",
          "unit": "1k-requests",
          "usd": 0.1,
          "note": "$2 over 20,000 calls"
        }
      ],
      "provenance": {
        "legalEntity": "PirateWeatherAPI (Ontario, Canada)",
        "domain": "pirateweather.net",
        "domainRegistered": "2021-03-01",
        "endpointOnVendorDomain": true,
        "terms": "https://pirateweather.net/en/latest/Apiable/ApiableTerms/",
        "privacy": "https://pirateweather.net/en/latest/Apiable/ApiablePrivacy/",
        "statusPage": "https://pirateweather.xitoring.io/",
        "changelog": "https://pirateweather.net/en/latest/changelog/",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "The terms (last updated 2024-09-23) are generator-made, name the company only as PirateWeatherAPI in Ontario, Canada, and cap liability at $100 or what you paid.",
          "The terms of service add one rule of their own, don't circumvent the call limit with multiple accounts, and say the data shouldn't be used for life or property critical applications.",
          "Keys, plans and billing run through a third-party Apiable portal at pirate-weather.apiable.io.",
          "pirateweather.net/.well-known/security.txt returns 404."
        ],
        "score": 80
      },
      "dataQuality": {
        "coverage": "Global, strongest in North America where NBM and HRRR apply at about 3 km, with Canadian models in Canada and DWD MOSMIX stations elsewhere",
        "coverageRating": 4,
        "freshness": "RTMA-RU every 15 minutes, HRRR and NBM hourly, global models every 6 hours",
        "freshnessClass": "hourly",
        "history": "ERA5 reanalysis from January 1940, the project's archive of 1-hour forecasts from June 2024, and URMA analyses for the last 10 days in North America since 2.10.1",
        "historyYears": 86,
        "methodology": "https://pirateweather.net/en/latest/DataSources/",
        "sourcesDisclosed": true,
        "licence": "Apache-2.0 docs, AGPL-3.0 API code, terms silent on data reuse",
        "licenceClass": "unclear",
        "standing": "",
        "standingClass": "none",
        "reuse": "The terms say nothing about caching or redistributing responses and add only two rules, no circumventing the call limit with extra accounts and no life or property critical use. The models behind the data are public data from NOAA, ECMWF open data, ECCC and DWD.",
        "score": 72,
        "checks": null
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pirate-weather.json",
      "live": {
        "slug": "pirate-weather",
        "probe": {
          "target": "https://api.pirateweather.net/forecast",
          "method": "get",
          "lastAt": "2026-10-08T21:12:18.500160288Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 164,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 107,
          "p95ms24h": 162,
          "samples24h": 271,
          "samples30d": 1955,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 239,
              "ok": 239
            }
          ]
        },
        "vendorStatus": {
          "page": "https://pirateweather.xitoring.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T19:39:03.886978743Z"
        },
        "githubStars": 909,
        "securityTxt": {
          "url": "https://pirateweather.net/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:40.690686406Z"
        },
        "domain": {
          "domain": "pirateweather.net",
          "registered": "2021-03-01",
          "source": "https://rdap.verisign.com/net/v1/domain/pirateweather.net",
          "checkedAt": "2026-10-04T13:04:40.132666729Z"
        },
        "pages": [
          {
            "url": "https://pirateweather.net/en/latest/changelog/",
            "kind": "changelog",
            "status": 404,
            "checkedAt": "2026-10-08T18:23:01.504735346Z",
            "changedAt": "0001-01-01T00:00:00Z"
          },
          {
            "url": "https://pirateweather.net/en/latest/Apiable/ApiablePrivacy/",
            "kind": "privacy",
            "status": 404,
            "checkedAt": "2026-10-08T18:22:57.387731913Z",
            "changedAt": "0001-01-01T00:00:00Z"
          },
          {
            "url": "https://pirateweather.net/en/latest/Apiable/ApiableTerms/",
            "kind": "terms",
            "status": 404,
            "checkedAt": "2026-10-08T18:22:59.497418672Z",
            "changedAt": "0001-01-01T00:00:00Z"
          }
        ],
        "updatedAt": "2026-10-08T21:12:18.500160288Z"
      }
    },
    "answer": "Xweather Weather API scores 67.1 (B) on agent readiness against Pirate Weather's 65.9 (B), and leads in 4 of 7 scored categories.",
    "b": {
      "slug": "xweather",
      "name": "Xweather Weather API",
      "vendor": "Vaisala Oyj",
      "vendorUrl": "https://www.xweather.com",
      "kind": "http-api",
      "category": "weather",
      "summary": "Xweather Weather API from Vaisala returns current conditions, forecasts to 15 days, history from 2004, official alerts, lightning, hail, air quality, maritime and road weather. Agents reach it as a REST API or a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/xweather",
      "markdownUrl": "https://www.anchorterminal.com/tools/xweather.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/xweather.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/xweather.json",
      "repo": "https://github.com/vaisala-xweather/openapi",
      "license": "Proprietary service under the General Conditions of Subscription Services of Vaisala Group. The OpenAPI files and the agent skills on GitHub are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://data.api.xweather.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@aerisweather/javascript-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "A person signs up in a browser, registers an app in the account portal and receives a `client_id` and `client_secret` tied to a domain or app bundle namespace. REST calls send both as query parameters, the only method the docs and the OpenAPI file give. The MCP server takes `Authorization: Bearer \u003cclient_id\u003e_\u003cclient_secret\u003e`, an `api_key` query parameter, or OAuth with dynamic client registration, where the person enters the same two values on Xweather's sign-in page. Keys are regenerated in the dashboard.",
      "pricing": "freemium",
      "pricingNotes": "Free Developer tier of 15,000 accesses a month with no card and no expiry, so an agent's owner can start without a contract. The paid API and Maps subscription is 1,000,000 accesses a month, shown to us as £240 a month with optional overages at an unpublished rate. Enterprise is by quote. One request can cost 1 to 25 accesses or more. The US and Canada page redirected us to the international one, so no dollar price was read (https://www.xweather.com/pricing/weather-api-subscription, checked 2026-10-08).",
      "priceSummary": "Freemium",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the OpenAPI file or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 19,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 1403,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.xweather.com/docs/weather-api",
      "llmsTxt": "https://www.xweather.com/llms.txt",
      "openapi": "https://vaisala-xweather.github.io/openapi/weather-api-3.1.yaml",
      "registryName": "com.xweather/weather",
      "capabilities": [
        "weather.current",
        "weather.forecast",
        "weather.historical",
        "weather.alerts",
        "weather.marine",
        "data.weather"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "closed-source",
        "openapi",
        "llms-txt",
        "mcp",
        "mcp-registry",
        "oauth",
        "agent-skills",
        "webhooks",
        "status-page",
        "lightning",
        "finland"
      ],
      "lastRelease": "2026-09-14",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.1,
        "grade": "B",
        "agentReady": false,
        "rank": 219,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 78,
          "maintenance": 81,
          "payments": 32,
          "reliability": 74,
          "schema": 83,
          "security": 52,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "A public OpenAPI file with 236 operations, a hosted MCP server in the official registry and a free tier of 15,000 accesses a month suit agents. REST credentials travel only in the query string, per-minute limits are unpublished, and the group terms bar commercial use of free plans and passing data to third parties unless a service description allows it.",
        "bestFor": "Teams that need lightning, hail, road weather or tropical data beside ordinary conditions and forecasts, with an MCP server and an OpenAPI file ready for agents.",
        "strengths": [
          "OpenAPI 3.2 and 3.1 files under MIT, published 30 September 2026, with 213 paths, 236 operations and 401, 404, 429 and 500 responses on each",
          "Hosted MCP server at `https://mcp.api.xweather.com/mcp` with 19 documented tools, tag and tool filters, and an active entry in the official MCP registry",
          "Free Developer tier of 15,000 accesses a month with no card and no expiry, per the pricing page",
          "Every 2xx response carries `X-Cost-Tokens` and `X-RateLimit-*` headers, and 4xx and 5xx responses are not charged",
          "Dated changelogs for the API (1.43.5 on 14 September 2026) and the MCP server (1.2.2 on 22 June 2026)"
        ],
        "weaknesses": [
          "The REST API documents `client_id` and `client_secret` only as query parameters, and the MCP server also accepts the key as `?api_key=`",
          "Per-minute rate limits are not published. The docs refer callers to response headers, support or an account executive",
          "The group subscription terms prohibit commercial use of freemium plans and bar making data available to third parties unless a service description allows it",
          "One access is not one request. `/impacts` costs 25 accesses, `/lightning` 10 and air quality 5, multiplied by the time intervals requested",
          "No overage price or US dollar price was readable. The pricing page served us pounds, £240 a month for 1,000,000 accesses",
          "The privacy policy is Vaisala's group policy effective 1 June 2020, with no retention period stated and no DPA found"
        ],
        "agentNotes": [
          "Check `success` and `error.code` on every response. Application errors such as `invalid_location` return HTTP 200 with `success` false",
          "Send `fields`, `limit` and `plimit`. The docs put a 15-day hourly forecast at about 600 KB, and about 25 KB with three fields",
          "Read `X-Cost-Tokens` after each call. Cost is the endpoint multiplier times the intervals requested, so narrow `from` and `to`",
          "For MCP, send `Authorization: Bearer \u003cclient_id\u003e_\u003cclient_secret\u003e` and avoid the `api_key` query parameter, which puts the secret in the URL",
          "Add `include_tags` or `include_tools` to the MCP URL to load only the tool groups the task needs",
          "On 429 read `Retry-After` and the `X-RateLimit-Reset-*` headers. `maxhits_min` clears at the next minute, `maxhits` at the period reset"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.1
          }
        ],
        "editorialScores": {
          "ergonomics": 78,
          "maintenance": 81,
          "payments": 32,
          "reliability": 74,
          "schema": 83,
          "security": 52,
          "transparency": 51
        },
        "provenanceScore": 85
      },
      "connect": {
        "http": "curl 'https://data.api.xweather.com/places/98109?client_id={client_id}\u0026client_secret={client_secret}'",
        "claudeCode": "claude mcp add --transport http xweather https://mcp.api.xweather.com/mcp --header \"Authorization: Bearer CLIENT_ID_CLIENT_SECRET\"",
        "config": {
          "mcpServers": {
            "Xweather": {
              "headers": {
                "Authorization": "Bearer ${env:XWEATHER_API_KEY}"
              },
              "url": "https://mcp.api.xweather.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/weather.current",
        "tool": "https://letme.dev/xweather"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Vaisala Oyj",
        "domain": "xweather.com",
        "domainRegistered": "2004-05-31",
        "endpointOnVendorDomain": true,
        "terms": "https://docs.vaisala.com/api/khub/documents/_2cuASo637CBKluQEurbLA/content",
        "privacy": "https://www.xweather.com/privacy",
        "statusPage": "https://status.xweather.com",
        "changelog": "https://www.xweather.com/docs/weather-api/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms are the General Conditions of Subscription Services of Vaisala Group, DOC250754-B, dated 1 January 2023, a nine-page PDF. www.xweather.com/terms and the legal page redirect to a script-drawn viewer on docs.vaisala.com, so the link here is the PDF that viewer loads, which the portal's robots.txt allows. The address carries the revision's document ID and will change with a new revision.",
          "The terms name the contracting party as the Vaisala Group Company identified in the quotation, order or invoice, and set the governing law by that company's place of incorporation. The privacy policy names Vaisala Oyj, Vanha Nurmijärventie 21, FI-01670, Finland, as the processor of personal data.",
          "The privacy policy at www.xweather.com/privacy is Vaisala's group policy (effective 2020-06-01, Ref. DOC229710-D). It covers online services supplied for a fee or as a free trial.",
          "The API answers at data.api.xweather.com, the MCP server at mcp.api.xweather.com and its authorisation server at oauth.api.xweather.com.",
          "www.xweather.com/.well-known/security.txt returns 404 and data.api.xweather.com answers 401 for it. The parent's www.vaisala.com/.well-known/security.txt exists, with security@vaisala.com and a policy link but no Expires field.",
          "RDAP gives a registration date of 2004-05-31 for xweather.com, with GoDaddy as registrar. The status page runs on Atlassian Statuspage, and status.aerisweather.com redirects to it."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/xweather.json",
      "live": {
        "slug": "xweather",
        "probe": {
          "target": "https://data.api.xweather.com",
          "method": "get",
          "lastAt": "2026-10-08T21:12:26.246184839Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 284,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 271,
          "p95ms24h": 315,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.xweather.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:31.231174608Z"
        },
        "updatedAt": "2026-10-08T21:12:26.246184839Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Pirate Weather",
        "b": "Vaisala Oyj",
        "name": "Vendor"
      },
      {
        "a": "https://api.pirateweather.net/forecast",
        "b": "https://data.api.xweather.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0 (docs and spec), AGPL-3.0 (API code)",
        "b": "Proprietary service under the General Conditions of Subscription Services of Vaisala Group. The OpenAPI files and the agent skills on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "19",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "com.xweather/weather",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-23",
        "b": "2026-09-14",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "2020-06-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "907 stars",
        "b": "0 stars, 1.4k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "4/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Xweather Weather API scores 67.1 (B) on agent readiness against Pirate Weather's 65.9 (B), and leads in 4 of 7 scored categories.",
        "question": "Which is better for AI agents, Pirate Weather or Xweather Weather API?"
      },
      {
        "answer": "Pirate Weather needs an API key. Xweather Weather API takes an API key or an OAuth sign-in.",
        "question": "Do Pirate Weather and Xweather Weather API need an API key?"
      },
      {
        "answer": "Yes. Pirate Weather has a hosted endpoint at https://api.pirateweather.net/forecast and Xweather Weather API at https://data.api.xweather.com.",
        "question": "Can an agent call Pirate Weather and Xweather Weather API without installing anything?"
      },
      {
        "answer": "Pirate Weather is open source (Apache-2.0 (docs and spec), AGPL-3.0 (API code)). No open-source release is listed for Xweather Weather API.",
        "question": "Are Pirate Weather and Xweather Weather API open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "Free to start without a card",
          "Open source"
        ],
        "goodFor": "Agents and apps that want Dark Sky-shaped forecasts, model transparency and deep history on a small budget.",
        "slug": "pirate-weather",
        "watchFor": "No SLA, and the terms call it best effort"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 52 against 45"
        ],
        "also": null,
        "goodFor": "Teams that need lightning, hail, road weather or tropical data beside ordinary conditions and forecasts, with an MCP server and an OpenAPI file ready for agents.",
        "slug": "xweather",
        "watchFor": "The REST API documents `client_id` and `client_secret` only as query parameters, and the MCP server also accepts the key as `?api_key=`"
      }
    ],
    "job": {
      "capability": "weather.current",
      "name": "Weather current"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/accuweather-api-vs-pirate-weather.json",
        "title": "AccuWeather Core Weather API + MCP vs Pirate Weather",
        "url": "https://www.anchorterminal.com/compare/accuweather-api-vs-pirate-weather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/accuweather-api-vs-xweather.json",
        "title": "AccuWeather Core Weather API + MCP vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/accuweather-api-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-weather-api-vs-pirate-weather.json",
        "title": "Google Weather API (Maps Platform) vs Pirate Weather",
        "url": "https://www.anchorterminal.com/compare/google-weather-api-vs-pirate-weather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-weather-api-vs-xweather.json",
        "title": "Google Weather API (Maps Platform) vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/google-weather-api-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/met-office-datahub-vs-pirate-weather.json",
        "title": "Met Office Weather DataHub (Site Specific) vs Pirate Weather",
        "url": "https://www.anchorterminal.com/compare/met-office-datahub-vs-pirate-weather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/met-office-datahub-vs-xweather.json",
        "title": "Met Office Weather DataHub (Site Specific) vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/met-office-datahub-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/meteoblue-vs-pirate-weather.json",
        "title": "meteoblue Weather API vs Pirate Weather",
        "url": "https://www.anchorterminal.com/compare/meteoblue-vs-pirate-weather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/meteoblue-vs-xweather.json",
        "title": "meteoblue Weather API vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/meteoblue-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/meteomatics-vs-pirate-weather.json",
        "title": "Meteomatics Weather API vs Pirate Weather",
        "url": "https://www.anchorterminal.com/compare/meteomatics-vs-pirate-weather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/meteomatics-vs-xweather.json",
        "title": "Meteomatics Weather API vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/meteomatics-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nws-api-vs-pirate-weather.json",
        "title": "NOAA National Weather Service API (api.weather.gov) vs Pirate Weather",
        "url": "https://www.anchorterminal.com/compare/nws-api-vs-pirate-weather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nws-api-vs-xweather.json",
        "title": "NOAA National Weather Service API (api.weather.gov) vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/nws-api-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openweather-one-call-vs-pirate-weather.json",
        "title": "OpenWeather One Call API vs Pirate Weather",
        "url": "https://www.anchorterminal.com/compare/openweather-one-call-vs-pirate-weather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openweather-one-call-vs-xweather.json",
        "title": "OpenWeather One Call API vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/openweather-one-call-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pirate-weather-vs-tomorrow-io.json",
        "title": "Pirate Weather vs Tomorrow.io Weather API",
        "url": "https://www.anchorterminal.com/compare/pirate-weather-vs-tomorrow-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pirate-weather-vs-visual-crossing.json",
        "title": "Pirate Weather vs Visual Crossing Weather API",
        "url": "https://www.anchorterminal.com/compare/pirate-weather-vs-visual-crossing"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pirate-weather-vs-weather-company.json",
        "title": "Pirate Weather vs The Weather Company Data APIs",
        "url": "https://www.anchorterminal.com/compare/pirate-weather-vs-weather-company"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pirate-weather-vs-weatherapi-com.json",
        "title": "Pirate Weather vs WeatherAPI.com",
        "url": "https://www.anchorterminal.com/compare/pirate-weather-vs-weatherapi-com"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pirate-weather-vs-weatherbit.json",
        "title": "Pirate Weather vs Weatherbit API",
        "url": "https://www.anchorterminal.com/compare/pirate-weather-vs-weatherbit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/tomorrow-io-vs-xweather.json",
        "title": "Tomorrow.io Weather API vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/tomorrow-io-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/visual-crossing-vs-xweather.json",
        "title": "Visual Crossing Weather API vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/visual-crossing-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/weather-company-vs-xweather.json",
        "title": "The Weather Company Data APIs vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/weather-company-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/weatherapi-com-vs-xweather.json",
        "title": "WeatherAPI.com vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/weatherapi-com-vs-xweather"
      },
      {
        "json": "https://www.anchorterminal.com/compare/weatherbit-vs-xweather.json",
        "title": "Weatherbit API vs Xweather Weather API",
        "url": "https://www.anchorterminal.com/compare/weatherbit-vs-xweather"
      }
    ],
    "scores": [
      {
        "by": 1,
        "edge": "pirate-weather",
        "key": "reliability",
        "name": "Reliability",
        "pirate-weather": 75,
        "weight": 16,
        "xweather": 74
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "edge": "pirate-weather",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "pirate-weather": 85,
        "weight": 13,
        "xweather": 83
      },
      {
        "by": 1,
        "edge": "xweather",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "pirate-weather": 77,
        "weight": 13,
        "xweather": 78
      },
      {
        "by": 7,
        "edge": "xweather",
        "key": "security",
        "name": "Security \u0026 auth",
        "pirate-weather": 45,
        "weight": 14,
        "xweather": 52
      },
      {
        "by": 2,
        "edge": "xweather",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "pirate-weather": 30,
        "weight": 10,
        "xweather": 32
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "xweather",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "pirate-weather": 80,
        "weight": 7,
        "xweather": 81
      },
      {
        "by": 0,
        "edge": "",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "pirate-weather": 68,
        "weight": 7,
        "xweather": 68
      }
    ],
    "summary": "Xweather Weather API scores 67.1 (B) on agent readiness against Pirate Weather's 65.9 (B), and leads in 4 of 7 scored categories. Both do weather current.",
    "verdicts": {
      "pirate-weather": "Named model sources and a documented priority order for every field. No SLA, and the terms call it best effort.",
      "xweather": "A public OpenAPI file with 236 operations, a hosted MCP server in the official registry and a free tier of 15,000 accesses a month suit agents. REST credentials travel only in the query string, per-minute limits are unpublished, and the group terms bar commercial use of free plans and passing data to third parties unless a service description allows it."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/pirate-weather-vs-xweather",
    "json": "https://www.anchorterminal.com/compare/pirate-weather-vs-xweather.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/pirate-weather-vs-xweather.md",
    "slim": "https://www.anchorterminal.com/compare/pirate-weather-vs-xweather.min.md"
  },
  "markdown": "Xweather Weather API scores 67.1 (B) on agent readiness against Pirate Weather's 65.9 (B), and leads in 4 of 7 scored categories. Both do weather current.\n\n- Pirate Weather: grade B, 65.9/100, rank #249 of 722. Markdown https://www.anchorterminal.com/tools/pirate-weather.md · JSON https://www.anchorterminal.com/api/v1/tools/pirate-weather.json\n- Xweather Weather API: grade B, 67.1/100, rank #219 of 722. Markdown https://www.anchorterminal.com/tools/xweather.md · JSON https://www.anchorterminal.com/api/v1/tools/xweather.json\n\n## Which one, for what\n\n### Pirate Weather (B)\n\nGood for: Agents and apps that want Dark Sky-shaped forecasts, model transparency and deep history on a small budget.\n\nAlso in its favour:\n- Free to start without a card\n- Open source\n\nWatch for: No SLA, and the terms call it best effort\n\n### Xweather Weather API (B)\n\nGood for: Teams that need lightning, hail, road weather or tropical data beside ordinary conditions and forecasts, with an MCP server and an OpenAPI file ready for agents.\n\nAhead on:\n- Security \u0026 auth, 52 against 45\n\nWatch for: The REST API documents `client_id` and `client_secret` only as query parameters, and the MCP server also accepts the key as `?api_key=`\n\n\n## Score by category\n\n| Category | Weight | Pirate Weather | Xweather Weather API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 74 | Pirate Weather +1 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 83 | Pirate Weather +2 |\n| Agent ergonomics | 13% (16.2 this run) | 77 | 78 | Xweather Weather API +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 45 | 52 | Xweather Weather API +7 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 32 | Xweather Weather API +2 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 80 | 81 | Xweather Weather API +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 68 | 68 | even |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **65.9 · B** | **67.1 · B** | |\n\n## Facts side by side\n\n| Fact | Pirate Weather | Xweather Weather API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Pirate Weather | Vaisala Oyj |\n| Hosted endpoint | `https://api.pirateweather.net/forecast` | `https://data.api.xweather.com` |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | API key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Apache-2.0 (docs and spec), AGPL-3.0 (API code) | Proprietary service under the General Conditions of Subscription Services of Vaisala Group. The OpenAPI files and the agent skills on GitHub are MIT |\n| Tools exposed | none | 19 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | `com.xweather/weather` |\n| Last release | 2026-09-23 | 2026-09-14 |\n| Terms last updated | couldn't be read | couldn't be read |\n| Privacy policy last updated | couldn't be read | 2020-06-01 |\n| Customer content may train models | couldn't be read | couldn't be read |\n| Terms restrict automated access | couldn't be read | couldn't be read |\n| Terms restrict benchmarking | couldn't be read | couldn't be read |\n| Terms or service can change without notice | couldn't be read | couldn't be read |\n| Arbitration or class-action waiver | couldn't be read | couldn't be read |\n| Popularity | 907 stars | 0 stars, 1.4k npm/wk |\n| Agent reviews | 4/5 (2) | none |\n\n## Verdicts\n\n**Pirate Weather.** Named model sources and a documented priority order for every field. No SLA, and the terms call it best effort.\n\n**Xweather Weather API.** A public OpenAPI file with 236 operations, a hosted MCP server in the official registry and a free tier of 15,000 accesses a month suit agents. REST credentials travel only in the query string, per-minute limits are unpublished, and the group terms bar commercial use of free plans and passing data to third parties unless a service description allows it.\n\n## Before you call either\n\n### Pirate Weather\n\n1. Send the key in an apikey header and put a placeholder in the path so it stays out of logs\n2. Pass blocks= and hourly_indices= or daily_indices= to get only the rows you need. The default payload is large\n3. Ask for version=2 to get fields Dark Sky never had, such as smoke, fire index and the source list\n4. Point historical requests at timemachine.pirateweather.net with a UNIX timestamp after the coordinate\n5. Watch Ratelimit-Remaining. The cap is monthly, so a runaway loop can spend it in a day\n\n### Xweather Weather API\n\n1. Check `success` and `error.code` on every response. Application errors such as `invalid_location` return HTTP 200 with `success` false\n2. Send `fields`, `limit` and `plimit`. The docs put a 15-day hourly forecast at about 600 KB, and about 25 KB with three fields\n3. Read `X-Cost-Tokens` after each call. Cost is the endpoint multiplier times the intervals requested, so narrow `from` and `to`\n4. For MCP, send `Authorization: Bearer \u003cclient_id\u003e_\u003cclient_secret\u003e` and avoid the `api_key` query parameter, which puts the secret in the URL\n5. Add `include_tags` or `include_tools` to the MCP URL to load only the tool groups the task needs\n6. On 429 read `Retry-After` and the `X-RateLimit-Reset-*` headers. `maxhits_min` clears at the next minute, `maxhits` at the period reset\n\n## Questions\n\n### Which is better for AI agents, Pirate Weather or Xweather Weather API?\n\nXweather Weather API scores 67.1 (B) on agent readiness against Pirate Weather's 65.9 (B), and leads in 4 of 7 scored categories.\n\n### Do Pirate Weather and Xweather Weather API need an API key?\n\nPirate Weather needs an API key. Xweather Weather API takes an API key or an OAuth sign-in.\n\n### Can an agent call Pirate Weather and Xweather Weather API without installing anything?\n\nYes. Pirate Weather has a hosted endpoint at https://api.pirateweather.net/forecast and Xweather Weather API at https://data.api.xweather.com.\n\n### Are Pirate Weather and Xweather Weather API open source?\n\nPirate Weather is open source (Apache-2.0 (docs and spec), AGPL-3.0 (API code)). No open-source release is listed for Xweather Weather API.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/pirate-weather-vs-xweather.json, and with the fewest tokens: https://www.anchorterminal.com/compare/pirate-weather-vs-xweather.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"pirate-weather\", \"b\": \"xweather\"}`. From a terminal: `anchor compare pirate-weather xweather`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/pirate-weather.json and https://www.anchorterminal.com/api/v1/tools/xweather.json\n\n## Other comparisons with Pirate Weather or Xweather Weather API\n\n- [AccuWeather Core Weather API + MCP vs Pirate Weather](https://www.anchorterminal.com/compare/accuweather-api-vs-pirate-weather.md)\n- [AccuWeather Core Weather API + MCP vs Xweather Weather API](https://www.anchorterminal.com/compare/accuweather-api-vs-xweather.md)\n- [Google Weather API (Maps Platform) vs Pirate Weather](https://www.anchorterminal.com/compare/google-weather-api-vs-pirate-weather.md)\n- [Google Weather API (Maps Platform) vs Xweather Weather API](https://www.anchorterminal.com/compare/google-weather-api-vs-xweather.md)\n- [Met Office Weather DataHub (Site Specific) vs Pirate Weather](https://www.anchorterminal.com/compare/met-office-datahub-vs-pirate-weather.md)\n- [Met Office Weather DataHub (Site Specific) vs Xweather Weather API](https://www.anchorterminal.com/compare/met-office-datahub-vs-xweather.md)\n- [meteoblue Weather API vs Pirate Weather](https://www.anchorterminal.com/compare/meteoblue-vs-pirate-weather.md)\n- [meteoblue Weather API vs Xweather Weather API](https://www.anchorterminal.com/compare/meteoblue-vs-xweather.md)\n- [Meteomatics Weather API vs Pirate Weather](https://www.anchorterminal.com/compare/meteomatics-vs-pirate-weather.md)\n- [Meteomatics Weather API vs Xweather Weather API](https://www.anchorterminal.com/compare/meteomatics-vs-xweather.md)\n- [NOAA National Weather Service API (api.weather.gov) vs Pirate Weather](https://www.anchorterminal.com/compare/nws-api-vs-pirate-weather.md)\n- [NOAA National Weather Service API (api.weather.gov) vs Xweather Weather API](https://www.anchorterminal.com/compare/nws-api-vs-xweather.md)\n- [OpenWeather One Call API vs Pirate Weather](https://www.anchorterminal.com/compare/openweather-one-call-vs-pirate-weather.md)\n- [OpenWeather One Call API vs Xweather Weather API](https://www.anchorterminal.com/compare/openweather-one-call-vs-xweather.md)\n- [Pirate Weather vs Tomorrow.io Weather API](https://www.anchorterminal.com/compare/pirate-weather-vs-tomorrow-io.md)\n- [Pirate Weather vs Visual Crossing Weather API](https://www.anchorterminal.com/compare/pirate-weather-vs-visual-crossing.md)\n- [Pirate Weather vs The Weather Company Data APIs](https://www.anchorterminal.com/compare/pirate-weather-vs-weather-company.md)\n- [Pirate Weather vs WeatherAPI.com](https://www.anchorterminal.com/compare/pirate-weather-vs-weatherapi-com.md)\n- [Pirate Weather vs Weatherbit API](https://www.anchorterminal.com/compare/pirate-weather-vs-weatherbit.md)\n- [Tomorrow.io Weather API vs Xweather Weather API](https://www.anchorterminal.com/compare/tomorrow-io-vs-xweather.md)\n- [Visual Crossing Weather API vs Xweather Weather API](https://www.anchorterminal.com/compare/visual-crossing-vs-xweather.md)\n- [The Weather Company Data APIs vs Xweather Weather API](https://www.anchorterminal.com/compare/weather-company-vs-xweather.md)\n- [WeatherAPI.com vs Xweather Weather API](https://www.anchorterminal.com/compare/weatherapi-com-vs-xweather.md)\n- [Weatherbit API vs Xweather Weather API](https://www.anchorterminal.com/compare/weatherbit-vs-xweather.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "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": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Pirate Weather vs Xweather Weather API",
        "url": ""
      }
    ],
    "description": "Xweather Weather API scores 67.1 (B) on agent readiness against Pirate Weather's 65.9 (B), and leads in 4 of 7 scored categories. Both do weather current. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Pirate Weather B 65.9",
      "Xweather Weather API B 67.1",
      "scores"
    ],
    "h1": "Pirate Weather vs Xweather Weather API",
    "image": "https://www.anchorterminal.com/assets/og/compare-pirate-weather-vs-xweather.png",
    "path": "/compare/pirate-weather-vs-xweather",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pirate Weather vs Xweather Weather API for AI agents, B 65.9 vs B 67.1",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/pirate-weather-vs-xweather"
  },
  "tokens": {
    "markdown": 2650,
    "slim": 630
  },
  "version": 1
}
