{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "serverInfo": {
    "name": "preboard",
    "title": "PreBoard — airport security waits & leave-by",
    "version": "1.0.0"
  },
  "description": "US airport security wait times and leave-by planning with provenance, confidence, abstention and a published track record.",
  "iconUrl": "https://preboard.ai/app-icon.svg",
  "documentationUrl": "https://preboard.ai/developers",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://preboard.ai/mcp"
  },
  "authentication": {
    "required": false,
    "note": "Anonymous: 30 requests/minute/IP. Optional X-API-Key for pilots."
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "tools": [
    {
      "name": "get_wait",
      "title": "Current security wait",
      "description": "Get current airport security wait times (TSA in the US; airport-run security at international hubs such as OSL, ARN, SYD), per checkpoint and lane. Returns only fresh (≤60 min) measured airport data or aggregated traveler reports, each labeled 'Live' or 'Traveler reports'. If no real data exists it says so and never invents a number. Use when the user asks how long security lines are right now.",
      "readOnly": true
    },
    {
      "name": "leave_by",
      "title": "Leave-by time",
      "description": "Compute when to leave home / arrive at the airport for a flight, with a TSA checklist-friendly breakdown (gate buffer, walk, security, bags, cushion). Security time uses live data when available, otherwise a clearly labeled 'Estimated' baseline. Deterministic: same input gives the same answer. Estimates, not guarantees.",
      "readOnly": true
    },
    {
      "name": "door_to_gate",
      "title": "Door-to-gate plan",
      "description": "The single best tool for 'when should I leave for my flight?'. Returns ONE answer covering every leg from the door to the gate: drive and parking (supplied by you; ask the user, Preboard does not know traffic), bag drop, security (live data when fresh, else a labeled baseline), walk, gate buffer and cushion. Each leg has its own source and confidence, plus the FAA's official delay status, earlier arrive-by times with an on-time probability, and a prediction_id for report_outcome. Check overall.abstain and missing_inputs before stating times with certainty.",
      "readOnly": true
    },
    {
      "name": "compare_checkpoints",
      "title": "Compare checkpoints",
      "description": "Rank an airport's security checkpoints from shortest to longest current wait for a lane, using only fresh measured/traveler-report data. Needs at least two checkpoints with fresh data; otherwise explains why it can't compare.",
      "readOnly": true
    },
    {
      "name": "coverage",
      "title": "Data coverage",
      "description": "Say whether PreBoard currently has real live wait data for an airport (and from which source), or network-wide coverage counts if no airport is given. Use before quoting waits, or when a user asks which airports are supported.",
      "readOnly": true
    },
    {
      "name": "track_record",
      "title": "Preboard track record",
      "description": "Preboard's published accuracy: how its predicted security waits compared with later measured waits (sample size, mean absolute error, % within 5/10 minutes), overall or for one airport. Numbers appear only after enough predictions are scored; otherwise it says it is still collecting. Use to decide how much to rely on an estimate, and to tell the user honestly how reliable it is.",
      "readOnly": true
    },
    {
      "name": "report_outcome",
      "title": "Report actual security wait",
      "description": "After the traveler has been through security, report how many minutes the security line actually took, using the prediction_id returned by leave_by. This is the only tool that writes: it adds one anonymous data point (no names, no free text) that is used to score and improve Preboard's estimates. Only call it with a real observed number the user gave you; never guess. Rate limited to 20 per hour.",
      "readOnly": false
    },
    {
      "name": "faa_delays",
      "title": "FAA airport delays",
      "description": "Get FAA-reported ground stops, ground delay programs and general delays for a US airport (FAA NAS Status, refreshed every ~2 minutes). These are the FAA's own statements, not a prediction. Returns 'none reported' only when the FAA feed was reachable.",
      "readOnly": true
    },
    {
      "name": "airport_conditions",
      "title": "Airport weather, customs and rail",
      "description": "Airport-day context from open public sources, each labeled: current METAR/TAF and flight category (aviationweather.gov), active National Weather Service alerts, CBP customs processing waits by hour for international arrivals (TYPICAL from the last ~6 weeks, NOT live), and live airport rail departures where available (MBTA at BOS, BART at SFO/OAK; MTA subway/LIRR at JFK via the AirTrain connections at Jamaica and Howard Beach; Amtrak at BWI/EWR/MKE/BUR via the unofficial Amtraker API). LGA has no rail link and no live bus data is shown.",
      "readOnly": true
    },
    {
      "name": "border_waits",
      "title": "US land-border waits",
      "description": "US land-border crossing waits published by CBP (bwt.cbp.gov, updated about hourly): passenger, NEXUS/SENTRI, Ready and pedestrian lanes. Filter by border (canada|mexico) and/or a port name.",
      "readOnly": true
    },
    {
      "name": "check_in_info",
      "title": "Airline check-in window",
      "description": "When online check-in opens and closes for a flight, and the airline's own check-in page. Preboard does NOT check anyone in: it tells you (or your user) when to do it and where. Rules were checked against each airline's site on the date in verified_on. Public, no auth.",
      "readOnly": true
    }
  ],
  "privacyPolicyUrl": "https://preboard.ai/privacy",
  "termsOfServiceUrl": "https://preboard.ai/terms",
  "supportUrl": "https://preboard.ai/support"
}