{
  "name": "Preboard",
  "description": "Airport-day agent for US travel: door-to-gate leave-by times with honest labels (Live / Typical / Estimated / No live data), TSA security waits, FAA delays, and airline check-in windows with the airline's own link (12 airlines). It never checks anyone in and never asks for airline logins. With the traveler's own token it also keeps their trips.",
  "supportedInterfaces": [
    {
      "url": "https://preboard.ai/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Preboard",
    "url": "https://preboard.ai"
  },
  "version": "1.0.0",
  "documentationUrl": "https://preboard.ai/developers",
  "iconUrl": "https://preboard.ai/app-icon.svg",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "securitySchemes": {
    "preboardAgentToken": {
      "httpAuthSecurityScheme": {
        "scheme": "Bearer",
        "bearerFormat": "pba_ personal agent token",
        "description": "Created by the traveler at https://preboard.ai/account; scopes trips:read, trips:write. Only trip skills need it."
      }
    }
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "get_wait",
      "name": "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.",
      "tags": [
        "travel",
        "airport",
        "tsa"
      ],
      "examples": [
        "{\"skill\":\"get_wait\",\"arguments\":{...}}"
      ]
    },
    {
      "id": "leave_by",
      "name": "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.",
      "tags": [
        "travel",
        "airport",
        "tsa"
      ],
      "examples": [
        "{\"skill\":\"leave_by\",\"arguments\":{...}}"
      ]
    },
    {
      "id": "door_to_gate",
      "name": "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.",
      "tags": [
        "travel",
        "airport",
        "tsa"
      ],
      "examples": [
        "{\"skill\":\"door_to_gate\",\"arguments\":{...}}"
      ]
    },
    {
      "id": "coverage",
      "name": "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.",
      "tags": [
        "travel",
        "airport",
        "tsa"
      ],
      "examples": [
        "{\"skill\":\"coverage\",\"arguments\":{...}}"
      ]
    },
    {
      "id": "track_record",
      "name": "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.",
      "tags": [
        "travel",
        "airport",
        "tsa"
      ],
      "examples": [
        "{\"skill\":\"track_record\",\"arguments\":{...}}"
      ]
    },
    {
      "id": "faa_delays",
      "name": "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.",
      "tags": [
        "travel",
        "airport",
        "tsa"
      ],
      "examples": [
        "{\"skill\":\"faa_delays\",\"arguments\":{...}}"
      ]
    },
    {
      "id": "airport_conditions",
      "name": "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.",
      "tags": [
        "travel",
        "airport",
        "tsa"
      ],
      "examples": [
        "{\"skill\":\"airport_conditions\",\"arguments\":{...}}"
      ]
    },
    {
      "id": "check_in_info",
      "name": "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.",
      "tags": [
        "travel",
        "airport",
        "check-in"
      ],
      "examples": [
        "{\"skill\":\"check_in_info\",\"arguments\":{...}}"
      ]
    },
    {
      "id": "list_trips",
      "name": "List my trips",
      "description": "List the signed-in traveler's upcoming trips saved in Preboard (from the app, the web, their agents or forwarded confirmation emails), each with its airline check-in window. Requires a Preboard personal agent token with trips:read.",
      "tags": [
        "travel",
        "trips",
        "personal"
      ],
      "security": [
        {
          "preboardAgentToken": [
            "trips:read"
          ]
        }
      ]
    },
    {
      "id": "get_trip_plan",
      "name": "Plan for a trip",
      "description": "For one saved trip: a fresh door-to-gate leave-by plan (security labeled Live / Typical / Estimated exactly as leave_by does; Live is only used within 2 hours) plus the check-in window and airline link. Requires trips:read.",
      "tags": [
        "travel",
        "trips",
        "personal"
      ],
      "security": [
        {
          "preboardAgentToken": [
            "trips:read"
          ]
        }
      ]
    },
    {
      "id": "add_trip",
      "name": "Add a trip",
      "description": "Save a flight to the traveler's Preboard trips (same flight on the same day updates the existing trip instead of duplicating it). Only use details the user or their confirmation actually gave; never guess a time. Never send names, confirmation codes or passwords: Preboard does not accept them. Requires trips:write.",
      "tags": [
        "travel",
        "trips",
        "personal"
      ],
      "security": [
        {
          "preboardAgentToken": [
            "trips:write"
          ]
        }
      ]
    },
    {
      "id": "delete_trip",
      "name": "Delete a trip",
      "description": "Delete one of the traveler's saved trips. Requires trips:write. Ask the user before deleting.",
      "tags": [
        "travel",
        "trips",
        "personal"
      ],
      "security": [
        {
          "preboardAgentToken": [
            "trips:write"
          ]
        }
      ]
    },
    {
      "id": "import_trip_email",
      "name": "Import trips from an email",
      "description": "Read flights from a confirmation email you already have access to on the user's behalf (raw .eml, HTML or text; or .ics). Uses schema.org FlightReservation markup first, then text. Returns candidates; with save=true (trips:write) high/medium-confidence legs are saved and cancellations remove the matching trip. Preboard extracts only airline, flight number, airports and times; the email itself, names and confirmation codes are never stored. Max ~250 KB over MCP.",
      "tags": [
        "travel",
        "trips",
        "personal"
      ],
      "security": [
        {
          "preboardAgentToken": [
            "trips:write"
          ]
        }
      ]
    }
  ]
}