{
  "name": "SkyRoute",
  "version": "1.0.0",
  "description": "Flight search and booking tools exposed via WebMCP.",
  "contractHash": "a1c5d7afb422ae0cf6fe1e4975108192ecf71492af7f2521c9bbea6528848a82",
  "tools": [
    {
      "name": "search_flights",
      "description": "Search available flights between two airports on a given date. Returns fares sorted by price.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "origin": {
            "type": "string",
            "description": "IATA code of the departure airport, e.g. BLR"
          },
          "destination": {
            "type": "string",
            "description": "IATA code of the arrival airport, e.g. SIN"
          },
          "departureDate": {
            "type": "string",
            "description": "Departure date in YYYY-MM-DD format"
          },
          "cabin": {
            "type": "string",
            "enum": [
              "economy",
              "premium",
              "business"
            ],
            "description": "Cabin class. Defaults to economy."
          },
          "maxPrice": {
            "type": "number",
            "description": "Optional ceiling on fare price in USD"
          }
        },
        "required": [
          "origin",
          "destination",
          "departureDate"
        ]
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "get_fare_rules",
      "description": "Return the fare family, change fee, refundability and baggage allowance for a specific flight.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "flightId": {
            "type": "string",
            "description": "flightId returned by the flight search tool"
          }
        },
        "required": [
          "flightId"
        ]
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "book_flight",
      "description": "Book a specific flight for a named passenger. Requires explicit user confirmation before ticketing.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "flightId": {
            "type": "string",
            "description": "flightId returned by the flight search tool"
          },
          "passengerName": {
            "type": "string",
            "description": "Full name as printed on the travel document"
          },
          "email": {
            "type": "string",
            "description": "Contact email for the itinerary"
          }
        },
        "required": [
          "flightId",
          "passengerName",
          "email"
        ]
      },
      "annotations": {
        "readOnlyHint": false
      }
    },
    {
      "name": "check_booking_status",
      "description": "Look up the current status of an existing booking by PNR.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pnr": {
            "type": "string",
            "description": "Six character booking reference"
          }
        },
        "required": [
          "pnr"
        ]
      },
      "annotations": {
        "readOnlyHint": true
      }
    }
  ]
}