{
  "name": "travel.onebag/one-bag-travel",
  "title": "One Bag Travel",
  "description": "Carry-on travel backpack specifications, airline carry-on size and weight limits for ~200 airlines, and real one-bag packing lists. Read-only, no authentication.",
  "version": "1.0.0",
  "protocolVersion": "2025-06-18",
  "websiteUrl": "https://onebag.travel/",
  "endpoints": {
    "streamableHttp": "https://onebag.travel/mcp"
  },
  "remotes": [
    { "type": "streamable-http", "url": "https://onebag.travel/mcp" }
  ],
  "authentication": { "type": "none" },
  "capabilities": {
    "tools": { "listChanged": false }
  },
  "tools": [
    {
      "name": "search_carry_on_backpacks",
      "description": "Search the carry-on travel backpack database by name, brand, capacity, weight, features, and airline compatibility. Returns matching bags with their key specifications.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string", "description": "Free text matched against bag name and brand, e.g. \"Tortuga\" or \"Allpa\"." },
          "min_capacity_litres": { "type": "number", "description": "Minimum capacity in litres." },
          "max_capacity_litres": { "type": "number", "description": "Maximum capacity in litres." },
          "max_weight_kg": { "type": "number", "description": "Maximum empty weight in kilograms." },
          "laptop": { "type": "boolean", "description": "Only bags with a dedicated laptop compartment." },
          "fits_airline": { "type": "string", "description": "Airline name; only bags within that airline's carry-on dimensions are returned." },
          "min_airline_compatibility": { "type": "number", "description": "Minimum share of the ~200 tracked airlines the bag fits, 0-100." },
          "include_unavailable": { "type": "boolean", "description": "Include discontinued bags. Defaults to false." },
          "limit": { "type": "integer", "description": "Maximum results, 1-100. Defaults to 20." }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_carry_on_backpack",
      "description": "Full specifications for one carry-on travel backpack: dimensions, capacity, weight, materials, features, airline compatibility, and the page URL.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": { "type": "string", "description": "Backpack id as it appears in the /carryon/<id>/ URL." },
          "name": { "type": "string", "description": "Backpack name, e.g. \"Cotopaxi Allpa 35L\". Used when id is not given." }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_airline_carry_on_rules",
      "description": "Maximum carry-on dimensions and weight limit for an airline, in both metric and imperial, with the official source URL the limits were taken from.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "airline": { "type": "string", "description": "Airline name, e.g. \"Ryanair\". Omit to list every tracked airline." },
          "limit": { "type": "integer", "description": "Maximum results when listing, 1-250. Defaults to 25." }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "check_carry_on_fits_airline",
      "description": "Check whether a specific backpack is within a specific airline's carry-on size and weight limits, dimension by dimension.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "backpack": { "type": "string", "description": "Backpack id or name." },
          "airline": { "type": "string", "description": "Airline name." }
        },
        "required": ["backpack", "airline"],
        "additionalProperties": false
      }
    },
    {
      "name": "search_packing_lists",
      "description": "Find published one-bag packing lists by destination, temperature, or traveller. Returns list summaries with their page URLs.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "destination": { "type": "string", "description": "Destination name or fragment, e.g. \"Japan\"." },
          "query": { "type": "string", "description": "Free text matched against list title and destination." },
          "max_temperature_c": { "type": "number", "description": "Only lists packed for weather at or below this temperature." },
          "min_temperature_c": { "type": "number", "description": "Only lists packed for weather at or above this temperature." },
          "limit": { "type": "integer", "description": "Maximum results, 1-100. Defaults to 20." }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_packing_list",
      "description": "Every item on one published packing list, grouped by category, with weights where known.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": { "type": "string", "description": "Packing list id as it appears in the /packinglist/<id>/ URL." }
        },
        "required": ["id"],
        "additionalProperties": false
      }
    }
  ]
}
