Windsock › MCP server

Windsock MCP server Beta

Windsock exposes its aircraft intelligence — valuations, registry lookups, cost of ownership, market metrics, verified value reports, pre-buy diligence checklists, logbooks and more — as a remote Model Context Protocol server. Any MCP-capable assistant or agent runtime can call the same 59 tools the Windsock app uses, and every call is tied to your account. Signed-in users can also use the in-app version of this page at /app/docs/mcp; the REST equivalent is the Enterprise API v3 reference.

Endpoint

PropertyValue
Server URLhttps://windsock.ai/mcp
TransportStreamable HTTP (JSON-RPC 2.0 over POST). A GET without Accept: text/html returns 405; this page is what browsers and crawlers get.
Protocol version2025-06-18
Discovery/.well-known/oauth-protected-resource, /.well-known/oauth-authorization-server
Scopeswindsock.read, windsock.write
Machine-readablellms.txt

Authentication

Chat assistants use OAuth so you approve access in a browser. Server-side agents cannot open a browser, so they send your account API key as a header instead. Both resolve to the same account, plan and tool catalog.

OAuth 2.1 (chat assistants)API key (agents & SDKs)
Use it fromChatGPT, Claude, Grok, Copilot and any client with a custom-connector setting.OpenAI Agents API, Anthropic Messages API MCP connector, Claude Code, LangChain, cURL, your own code.
HowPaste the server URL into the client. It discovers the authorization server, registers itself (dynamic client registration, PKCE) and sends you to a Windsock consent screen. Walkthroughs are on the Integrations page.Send Authorization: Bearer wsk_… or X-API-Key: wsk_… on every request. Get the key from Integrations → Agents & SDKs.
Token lifetimeAccess tokens last 24 hours and refresh automatically for 90 days. Revoke a connection any time from Integrations.The key does not expire. Enterprise API accounts can rotate it from the API dashboard.
Keep in mindSome assistants require a paid workspace to add custom connectors.Treat the key like a password: store it in a vault or secret store, never in client-side code.

Quickstart

Replace wsk_YOUR_API_KEY with your key. The Agents & SDKs panel produces these snippets with your key filled in.

OpenAI Agents API

import OpenAI from "openai";

const client = new OpenAI();
const session = await client.beta.agents.sessions.create({
  agent: {
    model: "gpt-6-astra",
    tools: [
      {
        type: "mcp",
        server_label: "windsock",
        transport: { type: "http", server_url: "https://windsock.ai/mcp" },
        authorization: "wsk_YOUR_API_KEY",
      },
    ],
  },
  input: "What is N12345 worth today, and what should I check before buying it?",
});

Anthropic Messages API (MCP connector)

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();
const response = await client.beta.messages.create({
  model: "claude-opus-5",
  max_tokens: 16000,
  betas: ["mcp-client-2025-11-20"],
  mcp_servers: [
    { type: "url", name: "windsock", url: "https://windsock.ai/mcp", authorization_token: "wsk_YOUR_API_KEY" },
  ],
  tools: [{ type: "mcp_toolset", mcp_server_name: "windsock" }],
  messages: [{ role: "user", content: "What is N12345 worth today?" }],
});

Claude Code

claude mcp add --transport http windsock https://windsock.ai/mcp \
  --header "Authorization: Bearer wsk_YOUR_API_KEY"

cURL

curl -sS https://windsock.ai/mcp \
  -H "Authorization: Bearer wsk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

A typical first workflow: lookup_aircraft with a registration to get the make_model_id and avionics_ids, then value_aircraft, estimate_cost_of_ownership and find_similar_aircraft with those ids.

Install in one click

For editors and desktop clients that take a server URL, these add Windsock and sign you in with OAuth on first use:

Install in VS Code · Install in Cursor

Claude Code

claude mcp add --transport http windsock https://windsock.ai/mcp

Or install the plugin, which adds the server plus an aircraft pre-buy workflow skill:

/plugin marketplace add team-windsock/windsock-mcp
/plugin install windsock@windsock

Clients that only speak stdio

npx -y windsock-mcp        # npm bridge — OAuth, or set WINDSOCK_API_KEY
pip install windsock-mcp   # Python client + bridge (API key)

Source, examples and the packages: https://github.com/team-windsock/windsock-mcp.

Tools

59 tools. 21 are available to every signed-in account within the monthly call limit; the rest need a paid plan. Full input and output schemas come back from tools/list. Every tool carries readOnlyHint / destructiveHint annotations.

ToolWhat it doesAccessPlan
lookup_aircraft
Look up aircraft by tail number
Canonical registry + distilled aircraft profile for a registration. Accepts a US N-number OR an international mark (C-GKUH, VH-ABC, PH-XYZ, 9V-BLL — 17 registers). Returns structured aircraft data plus make_model_id and avionics_ids — the IDs needed downstream for valuation and reference lookups. The first step in any "value this tail" workflow. For a non-US aircraft the response carries a registration_authority block naming the state of registry, and the faa_ads / faa_stcs lists carry a jurisdiction note: those documents are FAA-issued and apply to the TYPE, not to that registration — the aircraft's own authority issues its directives.read-onlyFree
value_aircraft
Value an aircraft at a point in time
Machine-generated aircraft market value at a single point in time, from today back to 1960. Provide a tail number OR a full spec (make_model_id + aircraft_info). Optional as_of_date selects the contemporary model (>= 2020-01-01 or omitted) or the deep-history longitudinal model (before 2020). Set include=["explanation"] or ["uncertainty"] for richer output. The flagship valuation tool.writeFree
impute_aircraft_specs
Impute missing aircraft specs
ML fill-in for missing airframe, engine, and condition fields (SMOH, AFTT, interior/exterior quality, etc.) before a valuation. Identify the aircraft by registration or make_model_id; any fields you supply (including known hours) are preserved and used to estimate the rest. field_sources says which values were provided, taken from the tail's registry/listing data, or imputed. Quality scores use a 1–10 scale on input (a literal 1 reads as like-new, not the worst grade — send 0.1 for the worst) and are RETURNED on the 0–1 scale, where 0.7 means grade 7. Pass the returned values straight to value_aircraft, which accepts either scale.writeFree
infer_aircraft_specs
Infer aircraft specs from page content
Extract aircraft specs — AFTT, SMOH (engine 1, and engine 2 for twins), prop time, year, and interior/exterior quality (1–10), plus avionics mentioned — from observable page content: visible text and/or image URLs (a listing's own photos, or data: URLs). Uses the vision/LLM "autopilot inference" behind on-site valuation pre-fill. Anchor with registration or make_model_id to pull make/model + year from the FAA registry; set impute=true to fill gaps with the imputation model. Returns specs, per-field sources, and a ready-to-POST report_input for create_valuation_report. Requires Windsock PRO or Enterprise.writePaid
find_similar_aircraft
Find comparable aircraft
Canonically similar aircraft (same make/model cohort and equipment profile) to a given tail — for comp tables, substitute inventory, and "aircraft like this" lists. Comps stay on the ANCHOR'S OWN REGISTER by default: a US tail gets US comps, a Canadian tail Canadian ones. That matters because this registry spans 17 international registers — before scoping, a US Robinson R44 drew 14 of its 100 comps from foreign registers, which are different markets under different airworthiness authorities and not substitutes a US buyer can act on. Pass registry_scope="all" only when the caller genuinely wants the global fleet.read-onlyFree
search_aircraft
Search the aircraft registry
Registry-wide aircraft search — the fleet / market-research search surface. Returns individual registered tails matching an AND-combined filter set (make/model, US state, city, year, tail number, current registrant name, or geographic radius), with pagination and sorting. Resolve each model name to a make_model_id with search_make_models first; to cover several models in one search pass them as a list with condition "in". For population totals (e.g. "how many R182s in Oregon") prefer count_aircraft, which avoids paging. Each filter is {field_name, condition, value}.read-onlyFree
count_aircraft
Count registered aircraft (facets by state & year)
Aggregate registry census for a filter set: the total number of matching aircraft plus breakdowns by US state and by build year — in one call, without paging individual tails. Directly answers "how many Cessna R182s are registered in Oregon" (filter make_model_id + state, then read total_count / state_counts). Uses the same filter grammar as search_aircraft. Counts are computed over up to fleet_cap aircraft.read-onlyFree
estimate_cost_of_ownership
Estimate cost of ownership
Annual/monthly operating-cost breakdown for a specific tail, combining registry data, recent flight patterns, and optional override assumptions (fuel, insurance, hangar, annual hours, etc.). Great for pre-buy disclosures and TCO comparisons.read-onlyFree
assess_flight_activity_risk
Assess low flight-activity risk
Forward-looking probability that an aircraft will fly little over the next ~180 days, as of a given date. Used to flag stagnant inventory, prioritize inspections, and risk-score collateral.writePaid
analyze_flight_usage
Analyze flight usage vs cohort
How an aircraft is flown across seven flight categories (training, business, pleasure, etc.) relative to a comparable cohort. Useful for appraisal narratives, insurance underwriting, and validating seller claims about usage.writePaid
search_make_models
Search FAA make/models
Text search over FAA make/model names, returning make_model_id values needed by value_aircraft, impute_aircraft_specs, and reference lookups. Use to resolve "2015 Cirrus SR22" to a canonical id when no tail number is available.read-onlyFree
search_avionics
Search avionics equipment
Search avionics equipment names/types, returning avionics_ids that affect equipment-adjusted valuations. Use to map panel/upgrade text to canonical ids.read-onlyFree
search_airworthiness_directives
Search Airworthiness Directives (ADs)
Search FAA Airworthiness Directive records, optionally filtered by make_model_id and compliance status. For pre-buy AD review, maintenance planning, and appraisal compliance sections.read-onlyFree
search_stcs
Search Supplemental Type Certificates (STCs)
Search STC records, optionally filtered by make_model_id — certificate numbers, descriptions, applicability. For pre-buy due diligence and documenting mods that affect value. STC applicability lists can run to hundreds of models, making a single row ~90K+ characters; pass slim=true to drop the large applicability strings (model_series, tc_number, tc_holder) in favor of an applicability_summary with counts, so the endpoint stays usable at realistic limits.read-onlyFree
list_market_metrics
List market metrics
Catalog of macro GA market metrics Windsock tracks (stable identifiers, labels, units, and whether each supports forecasting). Discover valid metric names before calling get_market_metric.read-onlyFree
list_market_categories
List market categories
Aircraft segment keys (e.g. single_engine_piston) used to scope market metrics. Pass a key as the `category` argument to get_market_metric.read-onlyFree
get_market_metric
Get market metric time series + forecast
Historical actuals and optional forward forecast (with 75/95/99% confidence bands) for a named market metric, optionally scoped to an aircraft segment. Provides market context to complement individual valuations.read-onlyFree
search_reports
Search valuation reports
Paginated search over appraisal/valuation reports your account can access. Filter by registration, year, make_model_id, price bounds, and whether logbooks are attached.read-onlyFree
create_valuation_report
Create a verified valuation report
Generate a full Windsock verified value report (contemporary model only) from the same inputs as the windsock.ai valuation wizard. Creates a durable report owned by your account and queues PDF generation. Send the tail AND everything you know about the aircraft: any aircraft_info field you omit is filled with the make/model cohort MEDIAN, so a report built from a year alone prices like an average example — the response's inputs.stats_imputed / inputs.year_imputed list what was filled. Requires Windsock PRO or Enterprise.writePaid
get_report
Get a report (with optional sections)
Fetch one report by id. Use `include` to inline sub-blocks in a single response, e.g. ["pricing","aircraft","components","inspection","appraiser","client","contents"]. Use only ["print_preflight"] for an owner/admin-only read-only eligibility check returning booleans and an opaque reference, with no report data or token/render/write action.read-onlyFree
get_report_section
Get a rich report section
Fetch one of a report's structured sub-resources: comparable-sold, market-strength, interpretability, price-timeline, flight-review, flight-history, comparable-aircraft-stats, report-summary, pricing, aircraft, or logbooks. Mirrors the sections of the PDF report.read-onlyFree
get_avionics_prices
Avionics price map
The avionics id to price map behind equipment-adjusted valuations: average catalogue price per unit plus the wholesale factor. Use it to value a specific aircraft's panel from its avionics ids — wholesale = sum(average_price over the aircraft's ids) * wholesale_factor. Pair with search_avionics to resolve panel text to ids.read-onlyPaid
get_diligence_checklist
Get a report's diligence checklist
Fetch the pre-buy diligence checklist header for a report: generation status, progress counters, and knowledge score. Returns an `exists:false` shape if no checklist has been generated yet (call generate_diligence_checklist to create one).read-onlyPaid
list_diligence_items
List diligence checklist items
List the pre-buy diligence checklist items for a report. Each item carries its category, title, guidance, critical flag, current state (pending/pass/flag/fail/na), source (ad/stc/logbook/rag/user), dollar value-impact band, AD/STC ref ids, and any evidence (notes, cited logbook page ids, photos).read-onlyPaid
get_diligence_progress
Get diligence checklist progress
Fetch the gamified progress payload for a report's diligence checklist: percent complete, knowledge score, counters by state, critical-items-verified, and how many items were auto-verified from logbook records.read-onlyPaid
get_diligence_suggestions
Suggested diligence items
Suggest additional pre-buy checklist items for a report's diligence checklist: real Airworthiness Directives / STCs for the make/model that are not yet on the checklist, plus anonymized items other buyers have added for similar aircraft. Add one with add_diligence_item (source: "rag").read-onlyPaid
generate_diligence_checklist
Generate a make/model diligence checklist
Generate the make/model-specific pre-buy diligence checklist for a report (frontier-model research grounded in real ADs/STCs). Idempotent: an already-generated checklist is returned as-is. Generation runs in the background; poll get_diligence_checklist / get_diligence_progress for status.writePaid
add_diligence_item
Add a diligence checklist item
Add a custom (or accepted-suggestion) item to a report's diligence checklist. Requires a title; optional category, guidance, critical flag, and value_impact { min, max }. Creates the checklist on first use.writePaid
update_diligence_item
Update a diligence checklist item
Update one diligence item: set its state (pending/pass/flag/fail/na), add notes or photo keys, set the value_impact band, or edit a user item's fields. Use this to tick items off as you verify them.writePaid
delete_diligence_item
Delete a diligence checklist item
Remove one item from a report's diligence checklist (soft delete). Progress counters are recomputed automatically.writePaid
add_diligence_comment
Comment on a diligence item
Post a comment to a diligence checklist item's thread (e.g. rationale for a pass/fail, a question, or a finding). Comments are attributed to the caller and appear in the item's living thread.writePaid
add_diligence_citation
Cite evidence on a diligence item
Attach a citation to a diligence item substantiating its status — a report section, a digitized logbook page, an external link, or free text. kind ∈ report_section | logbook_page | link | text; reference is the section id / page id / URL / text.writePaid
search_logbooks
Search digitized logbooks
Semantic/hybrid search over digitized aircraft logbook entries across reports you can access. Each hit includes date, summary, OCR text, extracted fields, and page ids for citation. Scope to a report with report_id.writePaid
track_aircraft
Track an aircraft (watchlist)
Add a tail to your portfolio watchlist for recurring valuation snapshots and change monitoring. Requires make_model_id and aircraft_info.year; registration identifies the tail.writePaid
list_tracked_aircraft
List tracked aircraft
List the tails on your watchlist with their latest tracking state.read-onlyPaid
get_tracked_aircraft_snapshots
Get tracked aircraft valuation history
Historical valuation snapshots for a watchlisted tail (dated value points). Use for value trends, portfolio appreciation/depreciation, and collateral monitoring over time.read-onlyPaid
list_portfolios
List your Pro Portfolios
Your Pro Portfolios (your own and your team's), with fleet value, aircraft count and when each was last revalued. Start here: every other portfolio tool takes a portfolio_id from this list — never guess one.read-onlyPaid
get_portfolio_overview
Get a portfolio overview
One portfolio's fleet value and KPIs, its value history (monthly, same-aircraft index), the split by segment and by state, the value forecast, and the newest events. Pass inflation_base (YYYY-MM) for inflation-adjusted dollars.read-onlyPaid
get_portfolio_attribution
Get why a portfolio's value moved
Why one portfolio's value moved, in dollars by driver (market, airframe hours and age, engine time, condition, aircraft record, other inputs), with the aircraft that moved most; and where today's value sits against typical examples of the same aircraft, by the same drivers. Pass window (1d, 7d or 30d; default 1d) for the period the move covers. restated is what a change of valuation model did to earlier values: it is reported beside the move, not in it. Aircraft the period cannot be explained for are counted, never estimated. available is false until a daily valuation has stored explanations.read-onlyPaid
get_portfolio_attribution_by_month
Get a portfolio's value by driver, month by month
One portfolio's value by driver (market, airframe hours and age, engine time, condition, aircraft record, other inputs) at every month start of its history, oldest first. Every list has one entry per entry of months. change is why the same aircraft moved since the month before: each driver's amounts are that month's dollars, so add a driver's amounts from one month to another for its effect over that period; change.amount is their sum. level is where the value sits against typical examples of the same make, model and year that month: level.typical plus each driver's amount is level.fleet. The aircraft lists beside them say how many aircraft each figure covers; the rest are counted, never estimated. change.restated is what a restated earlier value did, reported beside the move, not in it. pending_aircraft are left out of level and change while their explanations catch up with new values (normally 0): when it is a large share of the portfolio, say the breakdown is being updated instead of quoting it. Nominal dollars. Use get_portfolio_attribution for the last day, week or month with the aircraft behind it. available is false until a month has been explained.read-onlyPaid
list_portfolio_aircraft
List the aircraft in a portfolio
The aircraft in one portfolio: tail, make/model/year, latest value and change, tracking status (last seen, flight activity, listing, registration) and the estimated loan balance. Each row's line_id addresses that aircraft in the other portfolio tools. A row's imputed_fields names the facts Windsock filled in (estimated, or from the FAA registry) rather than the holder provided, and unknown_fields the ones the holder cleared or gave unreadably; every other fact is the holder's own. Paginate with next_cursor (default 50 per page).read-onlyPaid
get_portfolio_aircraft
Get one aircraft in a portfolio
One portfolio aircraft in full: latest value, its 60-month value series, key facts, tracking status, estimated loan balance and LTV, and share of the fleet's value. holding.imputed_fields names the facts Windsock filled in (estimated, or from the FAA registry) rather than the holder provided, and holding.unknown_fields the ones the holder cleared; every other fact is the holder's own. Also answers for an aircraft that has left the portfolio (a line_id from list_portfolio_archived_aircraft): then archived is true and you get when and why it left, at what price, the facts it was valued on, and its value history up to that day.read-onlyPaid
get_portfolio_events
Get a portfolio's event feed
What happened to the portfolio's aircraft, newest first: value moves, flight activity (dormant, resumed, pattern changes), registration changes and expiries, listings, accidents/incidents, web mentions, and estimated-LTV crossings. Filter with kinds (comma-separated; a prefix ends in '.', e.g. "flight.,listing.") or line_id for one aircraft. Records from before an aircraft was acquired are left out unless include_history is true. Paginate with next_cursor.read-onlyPaid
get_aircraft_web_findings
Get web findings for a portfolio aircraft
Web pages found about one portfolio aircraft (for-sale posts, rental/charter use, accident reports, …), grouped into episodes by the question they answer and ranked alert / warn / info / history, each with its sources. Also lists the aircraft's records from before its acquisition.read-onlyPaid
get_aircraft_flight_profile
Get a portfolio aircraft's flight profile
How one portfolio aircraft is being flown: weekly flying days against its seasonal expectation, local/pattern vs. cross-country mix, and detected changes in utilisation or use. available is false when no profile exists yet.read-onlyPaid
get_portfolio_lender_view
Get a portfolio's lender view
Estimated loan balances and estimated LTV per aircraft, the book summary and the watchlist. These are ESTIMATES from each aircraft's purchase price and date under the portfolio's lending assumptions, except where an aircraft has its own loan terms on file (`estimate.terms_basis`, `estimate.line_terms`, `loan_terms`) — those terms win field by field.read-onlyPaid
list_portfolio_reports
List a portfolio's locked reports
The portfolio's locked point-in-time reports, newest first: name, kind, as-of date, status and aircraft counts.read-onlyPaid
list_portfolio_scenarios
List a portfolio's saved stress scenarios
Saved Stress Lab scenarios for the portfolio (market shocks and their inputs), newest first.read-onlyPaid
get_portfolio_positions
Get where a portfolio's aircraft are
The last-known position of each aircraft in the portfolio — live when airborne, else the last ADS-B fix, else its base — with the source of each position.read-onlyPaid
list_portfolio_archived_aircraft
List aircraft that have left a portfolio
The aircraft that have left one portfolio (sold, paid off, listing ended…), newest exit first, with totals: when each came in and at what price, when and why it left and at what price, and Windsock's last value before it left. On a portfolio of aircraft for sale the entry price is the first asking price and the exit price the last. Each row's line_id addresses that aircraft in get_portfolio_aircraft (its full history) and update_portfolio_aircraft.read-onlyPaid
update_portfolio_aircraft
Correct the facts on a portfolio aircraft
Change what is on file about one aircraft in a portfolio you own, whether it is still in the portfolio or has left it. Send only what changes. On an aircraft still in the portfolio, facts the valuation depends on (tail, year, hours, engine times, condition, location, the date it came in) re-price its history, which takes a minute or two (repricing is true in the reply). On one that has left, every change is recorded, and one that would have moved its value history (those facts, or an exit moved later) has that history priced again in place, up to the day it left: the reply says repricing and value_history_stale, and list_portfolio_archived_aircraft shows value_history_stale false once the new values are in (a minute or two). The entry price, asking price, notes and the exit facts (why it left, when, for how much) never affect values. Exit facts apply only to an aircraft that has left. This does not change an aircraft's make and model, and does not add, archive, restore or delete aircraft. Confirm the change with the user before calling.writePaid
enrich_aircraft_for_underwriting
Enrich one aircraft for underwriting
Everything an aviation underwriter checks about one aircraft, in one call: the value with calibrated ranges (likely = 68%, outer = 90%) and the model release that produced it; an optional hull-value check of an insured value against those ranges; the registration record (status, expiry, state, owner tenure, registrant changes — never owner names or addresses); airworthiness context (the type's ADs and STC count, accident, NTSB and service-difficulty record counts); and recent ADS-B activity with the 180-day low-activity probability. Provide a tail number OR make_model_id plus aircraft_info.year. Returns an enrichment_id that get_underwriting_enrichment re-serves exactly later. Fleet Command and Enterprise API tiers only.writePaid
enrich_hull_schedule
Enrich a hull schedule (up to 100 aircraft)
Run enrich_aircraft_for_underwriting over a carrier's hull schedule of up to 100 aircraft and list the insured values outside the calibrated ranges: summary.outside_range holds the aircraft insured above the central range (direction over) or below it (direction under). Each item takes the same fields as enrich_aircraft_for_underwriting (registration or make_model_id + aircraft_info.year, insured_value, reference, ...). Set book_total to true to also get the schedule's expected dollar total and a 90% range for that total, tested on held-out books (it ran wide for large mixed books and narrow for books concentrated in one segment); values without calibrated ranges (for example reference-based values) are left out and listed in book_total.excluded. Fleet Command and Enterprise API tiers only; metered per aircraft.writePaid
get_underwriting_enrichment
Re-serve a stored underwriting enrichment
Return a stored underwriting enrichment exactly as it was first served, by its enrichment_id — the value, ranges and hull-value check as they stood then, even after a later model release. Visible to the key that created it and to its enterprise workspace.read-onlyPaid
get_airport_weather
Get airport weather (METAR + TAF)
Combined current weather (METAR) and forecast (TAF) for an airport by ICAO/ident — for trip planning context.read-onlyFree
forecast_fuel_price
Forecast fuel price at an airport
Forward avgas/jet fuel price projection for an airport over 1–15 day horizons, with uncertainty bands. For trip budgeting and FBO economics.writeFree
get_account_usage
Get API account usage & quotas
The authenticated account's tier, included quotas, current-month usage, and estimated cost. Use to check entitlements before firing paid tools.read-onlyFree

Plans & limits

PlanToolsLimit
Free21 of 59 tools (marked above)100 tool calls per calendar month (UTC). The count resets on the 1st.
Pro (individual or team)Full catalogReports, logbook search and tracking consume the same allowances as in the app.
Enterprise APIFull catalogTool calls are metered like the equivalent /api/v3 requests on your tier.

get_account_usage returns your tier, quotas and current-month usage so an agent can check before it spends an allowance. Every call is audit-logged to your account with the client that made it.

Errors

SituationWhat you get
No credentials401 with WWW-Authenticate: Bearer realm="mcp", resource_metadata=… pointing at the discovery document. OAuth clients start the consent flow from here.
Unknown or revoked token / key401 with error="invalid_token" in the challenge. Headless clients should surface this rather than retry.
Unknown tool nameJSON-RPC error -32602 (Unknown tool: …).
Tool not on your planA tools/call result with isError: true and the text "This MCP tool requires Windsock PRO, Enterprise, or a paid API plan."
Monthly limit reachedA tools/call result with isError: true and the text "Free MCP monthly limit reached (100 tool calls). Resets at … UTC."
Tool-level failureThe tool result carries the same error envelope as the matching /api/v3 endpoint.

Directories

Windsock is listed on Smithery and published in the official MCP Registry as ai.windsock/windsock. It is also available as the Windsock app for ChatGPT.

© Windsock · Privacy · Terms