{
  "data": {
    "similar": [
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/duffel.json",
        "name": "Duffel Flights and Stays API",
        "score": 66.7,
        "shared": [
          "travel.flights",
          "travel.search"
        ],
        "slug": "duffel"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/letsfg.json",
        "name": "LetsFG",
        "score": 64,
        "shared": [
          "travel.flights",
          "travel.search"
        ],
        "slug": "letsfg"
      },
      {
        "grade": "D",
        "json": "https://www.anchorterminal.com/tools/liteapi.json",
        "name": "LiteAPI (Nuitee Connect)",
        "score": 53.1,
        "shared": [
          "travel.flights",
          "travel.search"
        ],
        "slug": "liteapi"
      },
      {
        "grade": "E",
        "json": "https://www.anchorterminal.com/tools/travelport.json",
        "name": "Travelport TripServices APIs",
        "score": 45.9,
        "shared": [
          "travel.flights",
          "travel.search"
        ],
        "slug": "travelport"
      },
      {
        "grade": "E",
        "json": "https://www.anchorterminal.com/tools/skyscanner.json",
        "name": "Skyscanner Travel APIs",
        "score": 45.6,
        "shared": [
          "travel.flights",
          "travel.search"
        ],
        "slug": "skyscanner"
      },
      {
        "grade": "E",
        "json": "https://www.anchorterminal.com/tools/flightclaw.json",
        "name": "FlightClaw",
        "score": 45.3,
        "shared": [
          "travel.flights",
          "travel.search"
        ],
        "slug": "flightclaw"
      }
    ],
    "tool": {
      "slug": "kiwi-mcp",
      "name": "Kiwi.com MCP Server",
      "vendor": "Kiwi.com s.r.o.",
      "vendorUrl": "https://www.kiwi.com",
      "kind": "mcp",
      "category": "travel",
      "summary": "Kiwi.com's remote MCP server searches the travel agency's flight inventory for one-way and return trips. It needs no account or key, and each result carries a link to book on kiwi.com.",
      "url": "https://www.anchorterminal.com/tools/kiwi-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/kiwi-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/kiwi-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json",
      "repo": "https://github.com/alpic-ai/kiwi-mcp-server-public",
      "license": "Proprietary hosted service. The public repository holds only a README and has no licence file",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.kiwi.com",
      "packages": [],
      "auth": "none",
      "authNotes": "No credentials. `https://mcp.kiwi.com` answered `initialize`, `tools/list` and `tools/call` with no key, token or session header on 8 October 2026, and `/.well-known/oauth-protected-resource` returns 404. Access is self-serve by adding the URL to an MCP client.",
      "pricing": "free",
      "pricingNotes": "Free to call, with no account, card or sandbox step, as observed on 8 October 2026. No page states a price or a usage limit for the server. Travellers pay the fare on kiwi.com after following a result's booking link, under Kiwi.com's terms and conditions (https://www.kiwi.com/en/pages/content/legal/).",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README or in the server's responses, which need no payment (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 2,
      "popularity": {
        "githubStars": 12,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://github.com/alpic-ai/kiwi-mcp-server-public",
      "mcpTools": {
        "url": "https://mcp.kiwi.com",
        "checkedAt": "2026-10-08T21:33:51.894639Z",
        "status": "ok",
        "protocol": "2026-07-28",
        "tools": [
          {
            "name": "search-flight",
            "title": "Search for flights with Kiwi.com",
            "description": "# Search for flights\n\nSearches Kiwi.com for available flights between two locations for the given dates and passengers. City or airport names are resolved automatically, so call this whenever the user wants to search for flights — whether they gave IATA codes or just place names.\n\n## Result shape\n\nReturns `{ query, currency, passengers, resultsCount, itineraries, searchTimeMs }`. Each item in `itineraries` has:\n- `price` (number) and `priceFormatted` (e.g. \"123 EUR\")\n- `totalDurationSeconds`\n- `bookingUrl` — the link to book the flight\n- `imageId` — destination city id for a hero photo (https://images.kiwi.com/photos/600x600/{imageId}.jpg)\n- `baggage` — total included baggage across all travelers: `{ personalItem, cabinBag, checkedBag }` (counts)\n- `outbound` (and `inbound` for return flights), each a leg with: `route` (list of airport codes including layovers, e.g. [\"PRG\",\"MAD\",\"BCN\"]), `departureTime` / `arrivalTime` (local ISO timestamps), `durationSeconds`, `stops`, `cabinClass`, and a `segments` list. Each segment has `from`/`to` (IATA), `fromCity`/`toCity`, `fromName`/`toName` (full airport names), `fromCountry`/`toCountry`, `carrier` (code) and `carrierName` (airline name), `flightNumber`, and `cabinClass`.\n\n## How to display\n\nRender a markdown table. Group results into cheapest (lowest `price`), shortest (lowest `totalDurationSeconds`), and other notable options. For each itinerary show, in order:\n  - Route: join `outbound.route` with \" → \" (e.g. \"PRG → MAD → BCN\"); for return flights show `inbound.route` on a second line.\n  - Times \u0026 duration: `outbound.departureTime` → `outbound.arrivalTime` (local), formatted readably (e.g. \"12 Jun 06:05 → 09:30 (3h 25m)\") using `outbound.durationSeconds`; add the `inbound` equivalents for return flights.\n  - Cabin: `outbound.cabinClass` (e.g. \"Economy\").\n  - Price: `priceFormatted`.\n  - Booking link: `bookingUrl`.\n\nFinally, summarise the best price and the shortest option, give a recommendation, and end wishing the user a nice trip with a short fun fact about the destination!",
            "inputSchema": {
              "properties": {
                "adults": {
                  "default": 1,
                  "description": "Number of adults (12+)",
                  "ge": 1,
                  "le": 9,
                  "title": "Adults",
                  "type": "integer"
                },
                "adults_hand_bags": {
                  "anyOf": [
                    {
                      "items": {
                        "maximum": 1,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "maxItems": 9,
                      "type": "array"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Cabin (hand) bags per adult, one entry per adult (each 0-1), e.g. [1, 1]",
                  "title": "Adults Hand Bags"
                },
                "adults_hold_bags": {
                  "anyOf": [
                    {
                      "items": {
                        "maximum": 2,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "maxItems": 9,
                      "type": "array"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Checked (hold) bags per adult, one entry per adult (each 0-2), e.g. [1, 0]",
                  "title": "Adults Hold Bags"
                },
                "allow_diff_airport_connection": {
                  "default": true,
                  "description": "Allow connections that change airports within the same city",
                  "title": "Allow Diff Airport Connection",
                  "type": "boolean"
                },
                "allow_overnight_stopovers": {
                  "default": true,
                  "description": "Allow overnight (red-eye) layovers",
                  "title": "Allow Overnight Stopovers",
                  "type": "boolean"
                },
                "allow_self_transfer": {
                  "default": true,
                  "description": "Allow self-transfer (virtual interlining) connections between separate tickets",
                  "title": "Allow Self Transfer",
                  "type": "boolean"
                },
                "atime_from": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "le": 23,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Earliest outbound arrival hour (0-23, local)",
                  "title": "Atime From"
                },
                "atime_to": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "le": 23,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Latest outbound arrival hour (0-23, local)",
                  "title": "Atime To"
                },
                "cabinClass": {
                  "anyOf": [
                    {
                      "enum": [
                        "M",
                        "W",
                        "C",
                        "F"
                      ],
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "M=economy, W=premium economy, C=business, F=first",
                  "title": "Cabinclass"
                },
                "children": {
                  "default": 0,
                  "description": "Number of children (2-11)",
                  "maximum": 8,
                  "minimum": 0,
                  "title": "Children",
                  "type": "integer"
                },
                "children_hand_bags": {
                  "anyOf": [
                    {
                      "items": {
                        "maximum": 1,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "maxItems": 8,
                      "type": "array"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Cabin (hand) bags per child, one entry per child (each 0-1), e.g. [1]",
                  "title": "Children Hand Bags"
                },
                "children_hold_bags": {
                  "anyOf": [
                    {
                      "items": {
                        "maximum": 2,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "maxItems": 8,
                      "type": "array"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Checked (hold) bags per child, one entry per child (each 0-2), e.g. [2]",
                  "title": "Children Hold Bags"
                },
                "currency": {
                  "default": "EUR",
                  "description": "Currency code (e.g. EUR, USD)",
                  "maxLength": 3,
                  "minLength": 1,
                  "title": "Currency",
                  "type": "string"
                },
                "departureDate": {
                  "description": "Departure date in dd/mm/yyyy — the day to fly, or the earliest date of a range (see departureDateTo)",
                  "maxLength": 10,
                  "title": "Departuredate",
                  "type": "string"
                },
                "departureDateFlexDays": {
                  "default": 0,
                  "description": "Search +/- this many days around departureDate (symmetric). Leave 0 when using departureDateTo",
                  "maximum": 10,
                  "minimum": 0,
                  "title": "Departuredateflexdays",
                  "type": "integer"
                },
                "departureDateTo": {
                  "anyOf": [
                    {
                      "maxLength": 10,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Latest departure date in dd/mm/yyyy for an explicit range [departureDate .. departureDateTo]. Use instead of departureDateFlexDays for a one-directional or asymmetric range; must be \u003e= departureDate",
                  "title": "Departuredateto"
                },
                "dtime_from": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "le": 23,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Earliest outbound departure hour (0-23, local)",
                  "title": "Dtime From"
                },
                "dtime_to": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "le": 23,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Latest outbound departure hour (0-23, local)",
                  "title": "Dtime To"
                },
                "exclude_airlines": {
                  "anyOf": [
                    {
                      "maxLength": 200,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Exclude flights operated by these airlines — comma-separated IATA codes, e.g. 'FR,W6'. Mutually exclusive with select_airlines",
                  "title": "Exclude Airlines"
                },
                "exclude_stopover_airports": {
                  "anyOf": [
                    {
                      "maxLength": 200,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Never connect via these airports — comma-separated IATA codes",
                  "title": "Exclude Stopover Airports"
                },
                "exclude_stopover_countries": {
                  "anyOf": [
                    {
                      "maxLength": 200,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Never connect via these countries — comma-separated ISO 3166-1 alpha-2 codes",
                  "title": "Exclude Stopover Countries"
                },
                "flyFrom": {
                  "description": "Origin: IATA code, city or airport name (e.g. \"PRG\", \"Prague\", \"London Heathrow\")",
                  "maxLength": 100,
                  "minLength": 1,
                  "title": "Flyfrom",
                  "type": "string"
                },
                "flyTo": {
                  "description": "Destination: IATA code, city or airport name",
                  "maxLength": 100,
                  "minLength": 1,
                  "title": "Flyto",
                  "type": "string"
                },
                "fly_days": {
                  "anyOf": [
                    {
                      "maxLength": 32,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Allowed outbound departure weekdays — comma-separated 0=Sun..6=Sat, e.g. '1,2,3,4,5' for weekdays",
                  "title": "Fly Days"
                },
                "infants": {
                  "default": 0,
                  "description": "Number of infants (\u003c2)",
                  "maximum": 4,
                  "minimum": 0,
                  "title": "Infants",
                  "type": "integer"
                },
                "locale": {
                  "default": "en",
                  "description": "Locale (e.g. en, de, fr)",
                  "maxLength": 10,
                  "minLength": 1,
                  "title": "Locale",
                  "type": "string"
                },
                "max_fly_duration": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Maximum total flight duration in hours",
                  "title": "Max Fly Duration"
                },
                "max_sector_stopovers": {
                  "anyOf": [
                    {
                      "minimum": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Maximum number of stopovers (connections) allowed per flight sector",
                  "title": "Max Sector Stopovers"
                },
                "nights_in_dst_from": {
                  "anyOf": [
                    {
                      "minimum": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Minimum nights at destination before return flight. Turns the search into a return search",
                  "title": "Nights In Dst From"
                },
                "nights_in_dst_to": {
                  "anyOf": [
                    {
                      "minimum": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Maximum nights at destination before return flight",
                  "title": "Nights In Dst To"
                },
                "one_for_city": {
                  "default": false,
                  "description": "If true, return only the single best result per destination city — useful for 'explore' searches with broad destinations",
                  "title": "One For City",
                  "type": "boolean"
                },
                "price_from": {
                  "anyOf": [
                    {
                      "minimum": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Minimum total price filter in the specified currency",
                  "title": "Price From"
                },
                "price_to": {
                  "anyOf": [
                    {
                      "minimum": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Maximum total price filter in the specified currency",
                  "title": "Price To"
                },
                "ret_atime_from": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "le": 23,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Earliest return arrival hour (0-23, local)",
                  "title": "Ret Atime From"
                },
                "ret_atime_to": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "le": 23,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Latest return arrival hour (0-23, local)",
                  "title": "Ret Atime To"
                },
                "ret_dtime_from": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "le": 23,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Earliest return departure hour (0-23, local)",
                  "title": "Ret Dtime From"
                },
                "ret_dtime_to": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "le": 23,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Latest return departure hour (0-23, local)",
                  "title": "Ret Dtime To"
                },
                "ret_fly_days": {
                  "anyOf": [
                    {
                      "maxLength": 32,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Allowed return departure weekdays — comma-separated 0=Sun..6=Sat",
                  "title": "Ret Fly Days"
                },
                "returnDate": {
                  "anyOf": [
                    {
                      "maxLength": 10,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Return date in dd/mm/yyyy — the day to fly back, or the earliest return date of a range (omit for one-way)",
                  "title": "Returndate"
                },
                "returnDateFlexDays": {
                  "default": 0,
                  "description": "Search +/- this many days around returnDate (symmetric). Leave 0 when using returnDateTo",
                  "maximum": 10,
                  "minimum": 0,
                  "title": "Returndateflexdays",
                  "type": "integer"
                },
                "returnDateTo": {
                  "anyOf": [
                    {
                      "maxLength": 10,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Latest return date in dd/mm/yyyy for an explicit range [returnDate .. returnDateTo]. Requires returnDate; use instead of returnDateFlexDays; must be \u003e= returnDate",
                  "title": "Returndateto"
                },
                "select_airlines": {
                  "anyOf": [
                    {
                      "maxLength": 200,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Only include flights operated by these airlines — comma-separated IATA codes, e.g. 'FR,U2,BA'. Mutually exclusive with exclude_airlines",
                  "title": "Select Airlines"
                },
                "sort": {
                  "default": "price",
                  "description": "Result ordering",
                  "enum": [
                    "price",
                    "duration",
                    "quality",
                    "date",
                    "popularity"
                  ],
                  "title": "Sort",
                  "type": "string"
                },
                "stopover_airports": {
                  "anyOf": [
                    {
                      "maxLength": 200,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Only connect via these airports — comma-separated IATA codes. Constrains connecting flights only; direct (non-stop) flights are still returned.",
                  "title": "Stopover Airports"
                },
                "stopover_countries": {
                  "anyOf": [
                    {
                      "maxLength": 200,
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Only connect via these countries — comma-separated ISO 3166-1 alpha-2 codes, e.g. 'DE,AT'. Constrains connecting flights only; direct (non-stop) flights are still returned.",
                  "title": "Stopover Countries"
                },
                "stopover_from": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Minimum layover duration in hours",
                  "title": "Stopover From"
                },
                "stopover_to": {
                  "anyOf": [
                    {
                      "ge": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Maximum layover duration in hours",
                  "title": "Stopover To"
                }
              },
              "required": [
                "flyFrom",
                "flyTo",
                "departureDate"
              ],
              "title": "search_flightsArguments",
              "type": "object"
            },
            "outputSchema": {
              "$defs": {
                "SearchFlightsBaggageOutput": {
                  "description": "Included per-traveler baggage counts (see ``transform._included_baggage``).",
                  "properties": {
                    "cabinBag": {
                      "default": 0,
                      "title": "Cabinbag",
                      "type": "integer"
                    },
                    "checkedBag": {
                      "default": 0,
                      "title": "Checkedbag",
                      "type": "integer"
                    },
                    "personalItem": {
                      "default": 0,
                      "title": "Personalitem",
                      "type": "integer"
                    }
                  },
                  "title": "SearchFlightsBaggageOutput",
                  "type": "object"
                },
                "SearchFlightsItineraryOutput": {
                  "additionalProperties": true,
                  "properties": {
                    "baggage": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/SearchFlightsBaggageOutput"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null
                    },
                    "bookingUrl": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Bookingurl"
                    },
                    "id": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Id"
                    },
                    "imageId": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Imageid"
                    },
                    "inbound": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/SearchFlightsLegOutput"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null
                    },
                    "outbound": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/SearchFlightsLegOutput"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null
                    },
                    "price": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Price"
                    },
                    "priceFormatted": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Priceformatted"
                    },
                    "totalDurationSeconds": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Totaldurationseconds"
                    }
                  },
                  "title": "SearchFlightsItineraryOutput",
                  "type": "object"
                },
                "SearchFlightsLegOutput": {
                  "additionalProperties": true,
                  "properties": {
                    "arrivalTime": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Arrivaltime"
                    },
                    "cabinClass": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Cabinclass"
                    },
                    "departureTime": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Departuretime"
                    },
                    "durationSeconds": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Durationseconds"
                    },
                    "from": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "From"
                    },
                    "route": {
                      "items": {
                        "type": "string"
                      },
                      "title": "Route",
                      "type": "array"
                    },
                    "segments": {
                      "items": {
                        "$ref": "#/$defs/SearchFlightsSegmentOutput"
                      },
                      "title": "Segments",
                      "type": "array"
                    },
                    "stops": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Stops"
                    },
                    "to": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "To"
                    }
                  },
                  "title": "SearchFlightsLegOutput",
                  "type": "object"
                },
                "SearchFlightsPassengersOutput": {
                  "properties": {
                    "adults": {
                      "default": 0,
                      "title": "Adults",
                      "type": "integer"
                    },
                    "children": {
                      "default": 0,
                      "title": "Children",
                      "type": "integer"
                    },
                    "infants": {
                      "default": 0,
                      "title": "Infants",
                      "type": "integer"
                    }
                  },
                  "title": "SearchFlightsPassengersOutput",
                  "type": "object"
                },
                "SearchFlightsSegmentOutput": {
                  "additionalProperties": true,
                  "properties": {
                    "arrivalTime": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Arrivaltime"
                    },
                    "cabinClass": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Cabinclass"
                    },
                    "carrier": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Carrier"
                    },
                    "carrierName": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Carriername"
                    },
                    "departureTime": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Departuretime"
                    },
                    "durationSeconds": {
                      "anyOf": [
                        {
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Durationseconds"
                    },
                    "flightNumber": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Flightnumber"
                    },
                    "from": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "From"
                    },
                    "fromCity": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Fromcity"
                    },
                    "fromCountry": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Fromcountry"
                    },
                    "fromName": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Fromname"
                    },
                    "to": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "To"
                    },
                    "toCity": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Tocity"
                    },
                    "toCountry": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Tocountry"
                    },
                    "toName": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "default": null,
                      "title": "Toname"
                    }
                  },
                  "title": "SearchFlightsSegmentOutput",
                  "type": "object"
                }
              },
              "additionalProperties": true,
              "description": "Wire shape for ``structuredContent`` (see ``transform.format_itineraries``).",
              "properties": {
                "currency": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Currency"
                },
                "error": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Error"
                },
                "itineraries": {
                  "items": {
                    "$ref": "#/$defs/SearchFlightsItineraryOutput"
                  },
                  "title": "Itineraries",
                  "type": "array"
                },
                "passengers": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/SearchFlightsPassengersOutput"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null
                },
                "query": {
                  "title": "Query",
                  "type": "string"
                },
                "resultsCount": {
                  "default": 0,
                  "title": "Resultscount",
                  "type": "integer"
                },
                "searchTimeMs": {
                  "default": 0,
                  "title": "Searchtimems",
                  "type": "integer"
                }
              },
              "required": [
                "query"
              ],
              "title": "SearchFlightsStructuredOutput",
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "feedback-to-devs",
            "title": "Send Feedback to Developers",
            "description": "Send feedback, bug reports, or feature requests about the Kiwi.com search-flight MCP tool to its developers. This channel is ONLY for the flight search tool — search results, pricing, itineraries, filters, or errors in search responses. Do NOT use it for other MCP servers, Claude/app behaviour, account or booking management, voice mode, or unrelated Kiwi.com features; those won't reach the right team. Include error messages, logs, or context that would help the developers reproduce the issue.",
            "inputSchema": {
              "properties": {
                "text": {
                  "description": "The content of the feedback. This is ONLY for the Kiwi.com search-flight MCP tool (search results, pricing, itineraries, filters, search errors) — not other MCP servers, Claude/app behaviour, or general Kiwi.com products. Include error messages, logs, or context that would help the developers reproduce the issue.",
                  "maxLength": 3000,
                  "minLength": 1,
                  "title": "Text",
                  "type": "string"
                }
              },
              "required": [
                "text"
              ],
              "title": "feedback_to_devsArguments",
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "title": "feedback_to_devsDictOutput",
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          }
        ],
        "schemaTokens": 4527,
        "changedAt": "2026-10-08T21:33:51.894639Z",
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 4527,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 2
          },
          "findings": [
            {
              "rule": "TC07",
              "severity": "warn",
              "tool": "search-flight",
              "message": "the description is about 519 tokens",
              "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "search-flight",
              "message": "the definition is about 4,192 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC29",
              "severity": "note",
              "message": "about 561 tokens (12% of the definitions) are titles that repeat property or function names",
              "fix": "Strip \"title\" keys that only restate a name before listing tools."
            }
          ]
        }
      },
      "capabilities": [
        "travel.flights",
        "travel.search"
      ],
      "tags": [
        "hosted",
        "mcp",
        "no-auth",
        "free",
        "flights",
        "search-only",
        "status-page",
        "bug-bounty"
      ],
      "lastRelease": "2025-08-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 51.9,
        "grade": "D",
        "agentReady": false,
        "rank": 571,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 13,
          "payments": 55,
          "reliability": 45,
          "schema": 55,
          "security": 54,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "breakdown": [
          {
            "key": "reliability",
            "name": "Reliability",
            "weight": 16,
            "effectiveWeight": 20,
            "score": 45,
            "points": 9,
            "reason": "status.kiwi.com is a Statuspage site with components for Search, Search API, Booking and payments, and none for the MCP server (15 of 20). Its incident feed's newest entry is dated 13 October 2021, so the last 90 days are clean on paper, but five years without an entry on a large travel site is weak evidence of a kept record (20 of 30). No rate limits found in the README or the tool definitions (0). No 429, Retry-After or backoff guidance found (0). No SLA (0). Nothing calls the server beta, although `serverInfo.version` is empty and the README's VS Code snippet says 0.0.1 (10)."
          },
          {
            "key": "performance",
            "name": "Performance",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
          },
          {
            "key": "schema",
            "name": "Schema \u0026 documentation",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 55,
            "points": 8.94,
            "reason": "Both tools carry typed JSON Schema inputs and an output schema, read from `tools/list` on 8 October 2026 (25). No llms.txt on kiwi.com (404) and no Markdown docs beyond the README (0). The `search-flight` description states its purpose, when to call it and the result shape, and `feedback-to-devs` says when not to use it (15 of 20). 47 typed properties with ranges, two enums and three required fields, but dates are plain strings with no pattern, airline and airport lists are comma-separated strings, and the README says flexibility is up to 3 days where the schema allows 10 (11 of 15). Two example prompts in the README, no documented error responses (4 of 15). No changelog and no server version (0)."
          },
          {
            "key": "ergonomics",
            "name": "Agent ergonomics",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 66,
            "points": 10.73,
            "reason": "Two tools, but their definitions total 19.3 KB of JSON because `search-flight` has 47 parameters and display instructions in its description (20 of 25). Filters cover price, stops, airlines, times, layovers, bags, weekdays and five sort orders, with no result limit or pagination. Two searches each returned 15 itineraries, 25 KB and 34 KB of text, with the same data again in `structuredContent` (10 of 20). A rejected input returned a raw Pydantic validation message in an `error` field with `isError` false, and no error list is published (6 of 20). `search-flight` is annotated read-only and idempotent, and `feedback-to-devs` not read-only and not destructive (20). Three required inputs, defaults for the rest and place names accepted. A date sent as 2026-11-12 was accepted although the schema asks for dd/mm/yyyy. No SDK, MCP only (10 of 15)."
          },
          {
            "key": "security",
            "name": "Security \u0026 auth",
            "weight": 14,
            "effectiveWeight": 17.5,
            "score": 54,
            "points": 9.45,
            "reason": "No credentials at all. There is no secret to leak, and no way for an operator to scope, rotate or revoke access. `https://mcp.kiwi.com/.well-known/oauth-protected-resource` returns 404 (20 of 30). Search is read-only and nothing can spend money. The one write, `feedback-to-devs`, sends up to 3,000 characters of free text to Kiwi.com with no confirmation step (14 of 20). Results are structured fare data from Kiwi.com's own index with little free text. The tool description tells the model how to lay out results, to show the booking link and to close with a fun fact. No injection guidance found (8 of 15). No audit log or per-call view for an operator (0). security.txt with a contact, a disclosure policy that promises a reply in two working days, and a HackerOne bug bounty. No SOC 2 or ISO 27001 statement found on the pages read (12 of 20)."
          },
          {
            "key": "payments",
            "name": "Payments \u0026 pricing",
            "weight": 10,
            "effectiveWeight": 12.5,
            "score": 55,
            "points": 6.88,
            "reason": "No x402, MPP or L402 (0). The server cost nothing to call on 8 October 2026 and there is nothing to buy, but no page states that in writing, and fares include Kiwi.com's own charges without a published schedule (15 of 20). Free with no card and no account (20). Keyless, so an agent connects with no human signup (20)."
          },
          {
            "key": "tasks",
            "name": "Task success",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
          },
          {
            "key": "maintenance",
            "name": "Maintenance \u0026 community",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 13,
            "points": 1.14,
            "reason": "The only dated public change is the README repository's last commit on 7 August 2025, 14 months ago. The live server has changed since, because it now lists a second tool and filters the README doesn't describe, but nothing dates those changes (10 of 30). No releases or changelog entries in the last 90 days (0). Both issues on the public repository, opened 3 February and 9 September 2026, have no reply. `feedback-to-devs` is a support channel of a kind (3 of 15). Not in the official MCP registry. A search for kiwi returned five unrelated or third-party servers (0). No package, dependencies or CI to read (0)."
          },
          {
            "key": "transparency",
            "name": "Transparency \u0026 trust",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 66,
            "points": 5.78,
            "note": "editorial 44, provenance 87",
            "reason": "The server is closed source. The public repository holds one README and no licence file, and no terms name the MCP server, so the terms of use for the website and the booking terms and conditions are the nearest documents (10 of 30). The privacy policy, effective 7 September 2026, names Kiwi.com s.r.o. as controller and a data protection officer, lists data categories and purposes and gives a general retention of three years plus one. Its stated scope is the website and the mobile apps, and it doesn't mention MCP queries (20 of 30). No deprecation policy or dated notices (0). Infrastructure processors are named (Amazon Web Services, OVH, Hetzner, DigitalOcean, Akamai, Google Ireland) and transfers outside the EEA are described, without a full location list (14 of 20)."
          }
        ],
        "assessment": {
          "date": "2026-10-08",
          "basis": "public evidence",
          "confidence": "medium",
          "notes": {
            "ergonomics": "Two tools, but their definitions total 19.3 KB of JSON because `search-flight` has 47 parameters and display instructions in its description (20 of 25). Filters cover price, stops, airlines, times, layovers, bags, weekdays and five sort orders, with no result limit or pagination. Two searches each returned 15 itineraries, 25 KB and 34 KB of text, with the same data again in `structuredContent` (10 of 20). A rejected input returned a raw Pydantic validation message in an `error` field with `isError` false, and no error list is published (6 of 20). `search-flight` is annotated read-only and idempotent, and `feedback-to-devs` not read-only and not destructive (20). Three required inputs, defaults for the rest and place names accepted. A date sent as 2026-11-12 was accepted although the schema asks for dd/mm/yyyy. No SDK, MCP only (10 of 15).",
            "maintenance": "The only dated public change is the README repository's last commit on 7 August 2025, 14 months ago. The live server has changed since, because it now lists a second tool and filters the README doesn't describe, but nothing dates those changes (10 of 30). No releases or changelog entries in the last 90 days (0). Both issues on the public repository, opened 3 February and 9 September 2026, have no reply. `feedback-to-devs` is a support channel of a kind (3 of 15). Not in the official MCP registry. A search for kiwi returned five unrelated or third-party servers (0). No package, dependencies or CI to read (0).",
            "payments": "No x402, MPP or L402 (0). The server cost nothing to call on 8 October 2026 and there is nothing to buy, but no page states that in writing, and fares include Kiwi.com's own charges without a published schedule (15 of 20). Free with no card and no account (20). Keyless, so an agent connects with no human signup (20).",
            "reliability": "status.kiwi.com is a Statuspage site with components for Search, Search API, Booking and payments, and none for the MCP server (15 of 20). Its incident feed's newest entry is dated 13 October 2021, so the last 90 days are clean on paper, but five years without an entry on a large travel site is weak evidence of a kept record (20 of 30). No rate limits found in the README or the tool definitions (0). No 429, Retry-After or backoff guidance found (0). No SLA (0). Nothing calls the server beta, although `serverInfo.version` is empty and the README's VS Code snippet says 0.0.1 (10).",
            "schema": "Both tools carry typed JSON Schema inputs and an output schema, read from `tools/list` on 8 October 2026 (25). No llms.txt on kiwi.com (404) and no Markdown docs beyond the README (0). The `search-flight` description states its purpose, when to call it and the result shape, and `feedback-to-devs` says when not to use it (15 of 20). 47 typed properties with ranges, two enums and three required fields, but dates are plain strings with no pattern, airline and airport lists are comma-separated strings, and the README says flexibility is up to 3 days where the schema allows 10 (11 of 15). Two example prompts in the README, no documented error responses (4 of 15). No changelog and no server version (0).",
            "security": "No credentials at all. There is no secret to leak, and no way for an operator to scope, rotate or revoke access. `https://mcp.kiwi.com/.well-known/oauth-protected-resource` returns 404 (20 of 30). Search is read-only and nothing can spend money. The one write, `feedback-to-devs`, sends up to 3,000 characters of free text to Kiwi.com with no confirmation step (14 of 20). Results are structured fare data from Kiwi.com's own index with little free text. The tool description tells the model how to lay out results, to show the booking link and to close with a fun fact. No injection guidance found (8 of 15). No audit log or per-call view for an operator (0). security.txt with a contact, a disclosure policy that promises a reply in two working days, and a HackerOne bug bounty. No SOC 2 or ISO 27001 statement found on the pages read (12 of 20).",
            "transparency": "The server is closed source. The public repository holds one README and no licence file, and no terms name the MCP server, so the terms of use for the website and the booking terms and conditions are the nearest documents (10 of 30). The privacy policy, effective 7 September 2026, names Kiwi.com s.r.o. as controller and a data protection officer, lists data categories and purposes and gives a general retention of three years plus one. Its stated scope is the website and the mobile apps, and it doesn't mention MCP queries (20 of 30). No deprecation policy or dated notices (0). Infrastructure processors are named (Amazon Web Services, OVH, Hetzner, DigitalOcean, Akamai, Google Ireland) and transfers outside the EEA are described, without a full location list (14 of 20)."
          },
          "sources": [
            {
              "what": "MCP endpoint, `initialize`, `tools/list` and three `tools/call` requests made by us",
              "url": "https://mcp.kiwi.com",
              "seen": "2026-10-08"
            },
            {
              "what": "public README repository, three commits on 7 August 2025",
              "url": "https://github.com/alpic-ai/kiwi-mcp-server-public",
              "seen": "2026-10-08"
            },
            {
              "what": "repository metadata and issues",
              "url": "https://api.github.com/repos/alpic-ai/kiwi-mcp-server-public/issues?state=all",
              "seen": "2026-10-08"
            },
            {
              "what": "status page summary",
              "url": "https://status.kiwi.com/api/v2/summary.json",
              "seen": "2026-10-08"
            },
            {
              "what": "status page incident feed",
              "url": "https://status.kiwi.com/api/v2/incidents.json",
              "seen": "2026-10-08"
            },
            {
              "what": "terms and conditions, applying from 11 August 2026",
              "url": "https://www.kiwi.com/en/pages/content/legal/",
              "seen": "2026-10-08"
            },
            {
              "what": "terms of use for the website, effective 30 June 2026",
              "url": "https://www.kiwi.com/en/pages/content/terms/",
              "seen": "2026-10-08"
            },
            {
              "what": "privacy policy, effective 7 September 2026",
              "url": "https://www.kiwi.com/en/pages/content/privacy/",
              "seen": "2026-10-08"
            },
            {
              "what": "security.txt",
              "url": "https://www.kiwi.com/.well-known/security.txt",
              "seen": "2026-10-08"
            },
            {
              "what": "security disclosure policy",
              "url": "https://www.kiwi.com/us/pages/security",
              "seen": "2026-10-08"
            },
            {
              "what": "official MCP registry search for kiwi",
              "url": "https://registry.modelcontextprotocol.io/v0.1/servers?search=kiwi",
              "seen": "2026-10-08"
            },
            {
              "what": "RDAP record for kiwi.com",
              "url": "https://rdap.verisign.com/com/v1/domain/kiwi.com",
              "seen": "2026-10-08"
            }
          ],
          "openQuestions": [
            "When the live server last changed. It lists a tool and filters the README of 7 August 2025 doesn't describe, and nothing public dates them",
            "Rate limits. None are published and we made six requests, too few to meet one",
            "Whether Kiwi.com or Alpic operates the endpoint. The README repository belongs to alpic-ai and names Kiwi.com as author, and responses come from a uvicorn server behind Google and Fastly on mcp.kiwi.com",
            "Which terms govern the MCP server. None name it, so `provenance.terms` points at the booking terms and conditions that apply once a user follows a booking link",
            "Whether booking links carry a referral or pricing difference. `https://kiwi.com/u/\u003cid\u003e` redirects to www.kiwi.com and we didn't follow it further",
            "unchecked: a launch announcement. A search of media.kiwi.com for MCP showed no result to our reader",
            "unchecked: SOC 2, ISO 27001 or PCI statements. None on the security, privacy or terms pages we read, and we looked no further",
            "The batch lead said one tool. The server lists two, `search-flight` and `feedback-to-devs`"
          ]
        },
        "negative": 0,
        "verdict": "A keyless flight search with one typed, read-only tool, 47 filters and a booking link on every itinerary. It can't book, hold, change or cancel, and it has no published rate limits, changelog, terms or version. Each search returns 15 itineraries with no way to ask for fewer.",
        "bestFor": "An assistant that looks up fares and hands the user a link to book on kiwi.com, with no setup.",
        "strengths": [
          "No account, key or OAuth. An `initialize` and a `tools/call` to `https://mcp.kiwi.com` answered without credentials on 8 October 2026",
          "`search-flight` carries a typed input schema with 47 properties, three of them required, and an output schema",
          "Both tools carry annotations. `search-flight` is marked read-only and idempotent",
          "City and airport names are resolved by the server, so no separate location lookup is needed",
          "Kiwi.com publishes a security.txt, a disclosure policy and a HackerOne bug bounty"
        ],
        "weaknesses": [
          "Search only. Booking, payment, changes and cancellations happen on kiwi.com through the `bookingUrl` in each result",
          "No rate limits, 429 guidance, SLA, changelog or deprecation policy found, and `serverInfo.version` is empty",
          "No result limit or pagination. Two searches returned 15 itineraries each, 25 KB and 34 KB of text, repeated in `structuredContent`",
          "Validation failures come back as a raw Pydantic message in an `error` field with `isError` false",
          "No terms name the MCP server, and the privacy policy's stated scope is the website and mobile apps",
          "The public repository is a README last changed on 7 August 2025, with no licence, and it omits the second tool and most filters"
        ],
        "agentNotes": [
          "POST to `https://mcp.kiwi.com` itself. `/mcp` returns 404, and responses arrive as `text/event-stream` even for a single reply",
          "Send dates as dd/mm/yyyy and set `currency`, which defaults to EUR",
          "Check the `error` field of every result. A rejected input returns `resultsCount` 0 with `isError` false",
          "Narrow with `price_to`, `max_sector_stopovers` and `sort`. There is no limit parameter and each search returns 15 itineraries",
          "Give the user `bookingUrl` to book. Don't call `feedback-to-devs` with user data, because it sends free text to Kiwi.com"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 51.9
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 13,
          "payments": 55,
          "reliability": 45,
          "schema": 55,
          "security": 54,
          "transparency": 44
        },
        "provenanceScore": 87
      },
      "connect": {
        "claudeCode": "claude mcp add --transport http kiwi-com-flight-search https://mcp.kiwi.com",
        "config": {
          "mcpServers": {
            "kiwi-com-flight-search": {
              "url": "https://mcp.kiwi.com"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/travel.flights",
        "tool": "https://letme.dev/kiwi-mcp"
      },
      "notable": [
        "The server lists two tools, `search-flight` and `feedback-to-devs`. The README describes only the first (https://mcp.kiwi.com, `tools/list` on 8 October 2026)",
        "`search-flight` takes 47 parameters, among them date ranges up to 10 days either side, passenger counts, cabin class, price, stops, airlines, departure and arrival hours, layovers, bags, weekdays and five sort orders (https://mcp.kiwi.com)",
        "Each itinerary carries a short `bookingUrl` of the form `https://kiwi.com/u/\u003cid\u003e`, which redirects to www.kiwi.com. The server has no tool to book, hold, change or cancel (https://mcp.kiwi.com)",
        "The `search-flight` description contains instructions to the model, to render a table, show the booking link, recommend an option and end with a fun fact about the destination (https://mcp.kiwi.com)",
        "The public repository belongs to alpic-ai, names Kiwi.com as author, holds a README and no code, and has three commits, all on 7 August 2025 (https://github.com/alpic-ai/kiwi-mcp-server-public)",
        "status.kiwi.com has components for Search, Search API, Booking and payments, none for the MCP server, and its newest incident is dated 13 October 2021 (https://status.kiwi.com/api/v2/incidents.json)",
        "Not in the official MCP registry. A search for kiwi returns five servers, none under a kiwi.com namespace (https://registry.modelcontextprotocol.io/v0.1/servers?search=kiwi)"
      ],
      "area": "domain-data",
      "details": [
        {
          "label": "Endpoint",
          "value": "`https://mcp.kiwi.com`, streamable HTTP, replies as `text/event-stream`. Accepted protocol version 2025-06-18. Server name `kiwicom-flight-search`, version empty"
        },
        {
          "label": "Tools",
          "value": "`search-flight` (read-only, idempotent) and `feedback-to-devs` (sends up to 3,000 characters of text to Kiwi.com). No prompts or resources"
        },
        {
          "label": "Search inputs",
          "value": "Required `flyFrom`, `flyTo` and `departureDate` (dd/mm/yyyy). 44 optional filters. Up to 9 adults, 8 children and 4 infants. Currency defaults to EUR, sort to price"
        },
        {
          "label": "Search output",
          "value": "`query`, `currency`, `passengers`, `resultsCount`, `itineraries`, `searchTimeMs` and `error`. Each itinerary has price, duration, baggage counts, legs with segments, and `bookingUrl`. 15 itineraries in each of two searches"
        },
        {
          "label": "Booking",
          "value": "On kiwi.com through the booking link. Not available through the server"
        },
        {
          "label": "Credentials",
          "value": "None"
        },
        {
          "label": "Rate limits",
          "value": "Not published"
        },
        {
          "label": "Errors",
          "value": "Validation failures return a result with `isError` false and a Pydantic message in `error`"
        },
        {
          "label": "Status",
          "value": "status.kiwi.com on Statuspage, with Search and Search API components and no MCP component"
        },
        {
          "label": "Security programme",
          "value": "security.txt, a disclosure policy and a HackerOne bug bounty"
        }
      ],
      "provenance": {
        "legalEntity": "Kiwi.com s.r.o.",
        "domain": "kiwi.com",
        "domainRegistered": "1994-11-23",
        "endpointOnVendorDomain": true,
        "terms": "https://www.kiwi.com/en/pages/content/legal/",
        "privacy": "https://www.kiwi.com/en/pages/content/privacy/",
        "statusPage": "https://status.kiwi.com",
        "changelog": "",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms and conditions and the privacy policy name Kiwi.com s.r.o., Rohanské nábřeží 678/25, 186 00 Prague 8-Karlín, Czech Republic, company ID 29352886. US consumers contract with Kiwi.com, Inc. of Fort Lauderdale, Florida.",
          "No terms name the MCP server. `terms` points at the booking terms and conditions (applying from 11 August 2026), which govern what a user buys through a booking link. The website's terms of use (effective 30 June 2026) are a separate page and forbid commercial use of the website.",
          "The privacy policy (effective 7 September 2026) states its scope as the website and the mobile apps and doesn't mention the MCP server.",
          "www.kiwi.com/.well-known/security.txt gives a contact, a policy page and a HackerOne programme and has no Expires field. mcp.kiwi.com/.well-known/security.txt returns 404.",
          "The README repository is under the alpic-ai GitHub organisation, not a Kiwi.com one, and names Kiwi.com as author.",
          "RDAP for kiwi.com gives a registration date of 1994-11-23."
        ],
        "score": 87,
        "checks": [
          {
            "check": "Legal entity named",
            "value": "Kiwi.com s.r.o.",
            "points": 20,
            "max": 20,
            "state": "ok"
          },
          {
            "check": "Domain age",
            "value": "kiwi.com, registered 1994-11-23 (31 years)",
            "points": 15,
            "max": 15,
            "state": "ok"
          },
          {
            "check": "Endpoint on the vendor's domain",
            "value": "mcp.kiwi.com",
            "points": 15,
            "max": 15,
            "state": "ok"
          },
          {
            "check": "Terms of service",
            "value": "read, states 3 of the 7 things a reader expects",
            "points": 6.6,
            "max": 10,
            "state": "part"
          },
          {
            "check": "Privacy policy",
            "value": "read, states 8 of the 8 things a reader expects",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "Status page",
            "value": "status.kiwi.com",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "Changelog",
            "value": "not found",
            "points": 0,
            "max": 10,
            "state": "no"
          },
          {
            "check": "security.txt",
            "value": "valid",
            "points": 10,
            "max": 10,
            "state": "ok"
          }
        ],
        "policies": [
          {
            "kind": "terms",
            "url": "https://www.kiwi.com/en/pages/content/legal/",
            "state": "read",
            "readAt": "2026-10-08",
            "words": 14555,
            "points": 6.6,
            "max": 10,
            "expected": [
              {
                "key": "terms.date",
                "label": "Gives the date it was last updated",
                "found": false
              },
              {
                "key": "terms.law",
                "label": "Names the governing law or courts",
                "found": true,
                "quote": "The Agreement and any legal relations established under it or derived from it, including issues of its formation and validity, shall be governed by the laws of the Czech Republic with the exclusion of any rules on conflict of laws.",
                "says": "The law of Czech Republic"
              },
              {
                "key": "terms.liability",
                "label": "States a limit on its liability",
                "found": false
              },
              {
                "key": "terms.termination",
                "label": "Says how the agreement or account can be ended",
                "found": true,
                "quote": "…station(s) and/or operations of other places of transition, as well as bankruptcy, and/or insolvency or termination of 50% or more of all Carriages of the Carrier or any other effect which significantly limits or disables the Carrier to provide its services."
              },
              {
                "key": "terms.changes",
                "label": "Says how changes to the terms are announced",
                "found": false
              },
              {
                "key": "terms.use",
                "label": "Lists what users may not do",
                "found": true,
                "quote": "Unless specifically agreed otherwise, in these cases, we shall have no obligations to provide you with any of the fulfillments described under this Section 10 and you shall not have the right to any of the rights defined therein."
              },
              {
                "key": "terms.sla",
                "label": "Refers to a service level or uptime commitment",
                "found": false
              }
            ],
            "toKnow": [
              {
                "key": "terms.arbitration",
                "label": "Requires arbitration or waives class actions",
                "found": true,
                "quote": "…THIS AGREEMENT CONTAINS IMPORTANT INFORMATION THAT APPLIES TO YOU ABOUT RESOLUTION OF DISPUTES THROUGH BINDING ARBITRATION RATHER THAN IN COURT, INCLUDING A WAIVER OF YOUR RIGHT TO BRING CLAIMS AS CLASS ACTIONS AND THE RIGHT TO OPT OUT, AND A LIMITATION ON YOUR RIGHT TO BRING CLAIMS AGAINST KIWI.COM, INC."
              }
            ],
            "notes": [
              {
                "date": "2026-10-08",
                "text": "When Kiwi.com cancels and reorders the same services at a lower price, it keeps the difference as its service fee.",
                "quote": "Any difference will be kept by Kiwi.com as the Kiwi.com Service Fee."
              },
              {
                "date": "2026-10-08",
                "text": "Where a time-limited refund choice expires, Kiwi.com may pay the refund as Kiwi.com Credit.",
                "quote": "In such a case, you agree that upon expiry of the offer, Kiwi.com may give you the refund in Kiwi.com Credit."
              },
              {
                "date": "2026-10-08",
                "text": "Kiwi.com charges a fee of 59 euros for every carriage when it processes a no-show refund.",
                "quote": "You hereby agree that for the processing of these No-Show Refunds, we shall charge you a fee amounting to €59 for every Carriage."
              }
            ]
          },
          {
            "kind": "privacy",
            "url": "https://www.kiwi.com/en/pages/content/privacy/",
            "state": "read",
            "readAt": "2026-10-08",
            "statedDate": "2026-09-07",
            "words": 14459,
            "points": 10,
            "max": 10,
            "expected": [
              {
                "key": "privacy.date",
                "label": "Gives the date it was last updated",
                "found": true,
                "quote": "This Privacy Policy is effective from: 7th September, 2026.",
                "says": "Last updated 2026-09-07"
              },
              {
                "key": "privacy.collected",
                "label": "Says what personal data is collected",
                "found": true,
                "quote": "In this Privacy Policy we explain what data we collect from you, why we collect it, how we use it and with whom we might share it."
              },
              {
                "key": "privacy.retention",
                "label": "Says how long data is kept",
                "found": true,
                "quote": "…to defend ourselves against legal claims raised by you, we will store your Personal Data for at least 4 years from the point of your use of the website / app.",
                "says": "Names a period of 4 years"
              },
              {
                "key": "privacy.processors",
                "label": "Says who else receives the data",
                "found": true,
                "quote": "If you use third party SSO accounts (e.g., Facebook, Google) for signing into your Kiwi.com Account, the account providers are informed about it and we obtain your Personal Data from them."
              },
              {
                "key": "privacy.sale",
                "label": "Says whether personal data is sold or shared for advertising",
                "found": true,
                "quote": "We do not sell your Personal Information within the meaning of CCPA.",
                "says": "Says it does not sell personal data"
              },
              {
                "key": "privacy.rights",
                "label": "Says what rights people have over their data",
                "found": true,
                "quote": "You can always unsubscribe (exercise your right to object to direct marketing or withdraw your consent) and check your subscription status through the links below every email newsletter that you get from us."
              },
              {
                "key": "privacy.contact",
                "label": "Gives a privacy contact",
                "found": true,
                "quote": "To do so, contact our Data Protection Officer at privacy-dpo@kiwi.com.",
                "says": "privacy-dpo@kiwi.com"
              },
              {
                "key": "privacy.transfers",
                "label": "Says where data is transferred or stored",
                "found": true,
                "quote": "Transferring your data outside of the European Economic Area"
              }
            ],
            "toKnow": [
              {
                "key": "privacy.sells",
                "label": "Says it sells personal data or shares it for advertising",
                "found": true,
                "quote": "We share an encrypted identifier (e.g., a hashed email address) with platforms including Meta for Business, Google Ads, and TikTok, so they can match it to your profile there and show you tailored offers."
              }
            ],
            "notes": [
              {
                "date": "2026-10-08",
                "text": "Customer support is handled mainly by an AI agent.",
                "quote": "Customer support at Kiwi is primarily handled by our AI agent."
              },
              {
                "date": "2026-10-08",
                "text": "Kiwi.com uses Verza conversation data to improve Verza, and minimises, aggregates or de-identifies it where possible.",
                "quote": "When using conversation data to improve Verza, we minimize, aggregate, or de-identify the data wherever possible."
              },
              {
                "date": "2026-10-08",
                "text": "After a fraud report to a bank, Kiwi.com may check public social media for a link to the booker or signs the trip was taken.",
                "quote": "If you report a purchase to your bank as fraudulent, we may check publicly available social media to establish whether you are connected to the person who made the Booking, or whether you published anything indicating you took the trip (for example, photos from the airport)."
              }
            ]
          }
        ]
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/kiwi-mcp.json",
      "live": {
        "slug": "kiwi-mcp",
        "probe": {
          "target": "https://mcp.kiwi.com",
          "method": "mcp-initialize",
          "lastAt": "2026-10-08T21:53:24.623857553Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 140,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 144,
          "p95ms24h": 202,
          "samples24h": 28,
          "samples30d": 28,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 28,
              "ok": 28
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.kiwi.com",
          "indicator": "minor",
          "summary": "Minor Service Outage",
          "checkedAt": "2026-10-08T21:58:00.546184217Z"
        },
        "mcpTools": {
          "url": "https://mcp.kiwi.com",
          "checkedAt": "2026-10-08T21:33:51.894639Z",
          "status": "ok",
          "protocol": "2026-07-28",
          "tools": [
            {
              "name": "search-flight",
              "title": "Search for flights with Kiwi.com",
              "description": "# Search for flights\n\nSearches Kiwi.com for available flights between two locations for the given dates and passengers. City or airport names are resolved automatically, so call this whenever the user wants to search for flights — whether they gave IATA codes or just place names.\n\n## Result shape\n\nReturns `{ query, currency, passengers, resultsCount, itineraries, searchTimeMs }`. Each item in `itineraries` has:\n- `price` (number) and `priceFormatted` (e.g. \"123 EUR\")\n- `totalDurationSeconds`\n- `bookingUrl` — the link to book the flight\n- `imageId` — destination city id for a hero photo (https://images.kiwi.com/photos/600x600/{imageId}.jpg)\n- `baggage` — total included baggage across all travelers: `{ personalItem, cabinBag, checkedBag }` (counts)\n- `outbound` (and `inbound` for return flights), each a leg with: `route` (list of airport codes including layovers, e.g. [\"PRG\",\"MAD\",\"BCN\"]), `departureTime` / `arrivalTime` (local ISO timestamps), `durationSeconds`, `stops`, `cabinClass`, and a `segments` list. Each segment has `from`/`to` (IATA), `fromCity`/`toCity`, `fromName`/`toName` (full airport names), `fromCountry`/`toCountry`, `carrier` (code) and `carrierName` (airline name), `flightNumber`, and `cabinClass`.\n\n## How to display\n\nRender a markdown table. Group results into cheapest (lowest `price`), shortest (lowest `totalDurationSeconds`), and other notable options. For each itinerary show, in order:\n  - Route: join `outbound.route` with \" → \" (e.g. \"PRG → MAD → BCN\"); for return flights show `inbound.route` on a second line.\n  - Times \u0026 duration: `outbound.departureTime` → `outbound.arrivalTime` (local), formatted readably (e.g. \"12 Jun 06:05 → 09:30 (3h 25m)\") using `outbound.durationSeconds`; add the `inbound` equivalents for return flights.\n  - Cabin: `outbound.cabinClass` (e.g. \"Economy\").\n  - Price: `priceFormatted`.\n  - Booking link: `bookingUrl`.\n\nFinally, summarise the best price and the shortest option, give a recommendation, and end wishing the user a nice trip with a short fun fact about the destination!",
              "inputSchema": {
                "properties": {
                  "adults": {
                    "default": 1,
                    "description": "Number of adults (12+)",
                    "ge": 1,
                    "le": 9,
                    "title": "Adults",
                    "type": "integer"
                  },
                  "adults_hand_bags": {
                    "anyOf": [
                      {
                        "items": {
                          "maximum": 1,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 9,
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Cabin (hand) bags per adult, one entry per adult (each 0-1), e.g. [1, 1]",
                    "title": "Adults Hand Bags"
                  },
                  "adults_hold_bags": {
                    "anyOf": [
                      {
                        "items": {
                          "maximum": 2,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 9,
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Checked (hold) bags per adult, one entry per adult (each 0-2), e.g. [1, 0]",
                    "title": "Adults Hold Bags"
                  },
                  "allow_diff_airport_connection": {
                    "default": true,
                    "description": "Allow connections that change airports within the same city",
                    "title": "Allow Diff Airport Connection",
                    "type": "boolean"
                  },
                  "allow_overnight_stopovers": {
                    "default": true,
                    "description": "Allow overnight (red-eye) layovers",
                    "title": "Allow Overnight Stopovers",
                    "type": "boolean"
                  },
                  "allow_self_transfer": {
                    "default": true,
                    "description": "Allow self-transfer (virtual interlining) connections between separate tickets",
                    "title": "Allow Self Transfer",
                    "type": "boolean"
                  },
                  "atime_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Earliest outbound arrival hour (0-23, local)",
                    "title": "Atime From"
                  },
                  "atime_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest outbound arrival hour (0-23, local)",
                    "title": "Atime To"
                  },
                  "cabinClass": {
                    "anyOf": [
                      {
                        "enum": [
                          "M",
                          "W",
                          "C",
                          "F"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "M=economy, W=premium economy, C=business, F=first",
                    "title": "Cabinclass"
                  },
                  "children": {
                    "default": 0,
                    "description": "Number of children (2-11)",
                    "maximum": 8,
                    "minimum": 0,
                    "title": "Children",
                    "type": "integer"
                  },
                  "children_hand_bags": {
                    "anyOf": [
                      {
                        "items": {
                          "maximum": 1,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 8,
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Cabin (hand) bags per child, one entry per child (each 0-1), e.g. [1]",
                    "title": "Children Hand Bags"
                  },
                  "children_hold_bags": {
                    "anyOf": [
                      {
                        "items": {
                          "maximum": 2,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 8,
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Checked (hold) bags per child, one entry per child (each 0-2), e.g. [2]",
                    "title": "Children Hold Bags"
                  },
                  "currency": {
                    "default": "EUR",
                    "description": "Currency code (e.g. EUR, USD)",
                    "maxLength": 3,
                    "minLength": 1,
                    "title": "Currency",
                    "type": "string"
                  },
                  "departureDate": {
                    "description": "Departure date in dd/mm/yyyy — the day to fly, or the earliest date of a range (see departureDateTo)",
                    "maxLength": 10,
                    "title": "Departuredate",
                    "type": "string"
                  },
                  "departureDateFlexDays": {
                    "default": 0,
                    "description": "Search +/- this many days around departureDate (symmetric). Leave 0 when using departureDateTo",
                    "maximum": 10,
                    "minimum": 0,
                    "title": "Departuredateflexdays",
                    "type": "integer"
                  },
                  "departureDateTo": {
                    "anyOf": [
                      {
                        "maxLength": 10,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest departure date in dd/mm/yyyy for an explicit range [departureDate .. departureDateTo]. Use instead of departureDateFlexDays for a one-directional or asymmetric range; must be \u003e= departureDate",
                    "title": "Departuredateto"
                  },
                  "dtime_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Earliest outbound departure hour (0-23, local)",
                    "title": "Dtime From"
                  },
                  "dtime_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest outbound departure hour (0-23, local)",
                    "title": "Dtime To"
                  },
                  "exclude_airlines": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Exclude flights operated by these airlines — comma-separated IATA codes, e.g. 'FR,W6'. Mutually exclusive with select_airlines",
                    "title": "Exclude Airlines"
                  },
                  "exclude_stopover_airports": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Never connect via these airports — comma-separated IATA codes",
                    "title": "Exclude Stopover Airports"
                  },
                  "exclude_stopover_countries": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Never connect via these countries — comma-separated ISO 3166-1 alpha-2 codes",
                    "title": "Exclude Stopover Countries"
                  },
                  "flyFrom": {
                    "description": "Origin: IATA code, city or airport name (e.g. \"PRG\", \"Prague\", \"London Heathrow\")",
                    "maxLength": 100,
                    "minLength": 1,
                    "title": "Flyfrom",
                    "type": "string"
                  },
                  "flyTo": {
                    "description": "Destination: IATA code, city or airport name",
                    "maxLength": 100,
                    "minLength": 1,
                    "title": "Flyto",
                    "type": "string"
                  },
                  "fly_days": {
                    "anyOf": [
                      {
                        "maxLength": 32,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Allowed outbound departure weekdays — comma-separated 0=Sun..6=Sat, e.g. '1,2,3,4,5' for weekdays",
                    "title": "Fly Days"
                  },
                  "infants": {
                    "default": 0,
                    "description": "Number of infants (\u003c2)",
                    "maximum": 4,
                    "minimum": 0,
                    "title": "Infants",
                    "type": "integer"
                  },
                  "locale": {
                    "default": "en",
                    "description": "Locale (e.g. en, de, fr)",
                    "maxLength": 10,
                    "minLength": 1,
                    "title": "Locale",
                    "type": "string"
                  },
                  "max_fly_duration": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum total flight duration in hours",
                    "title": "Max Fly Duration"
                  },
                  "max_sector_stopovers": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum number of stopovers (connections) allowed per flight sector",
                    "title": "Max Sector Stopovers"
                  },
                  "nights_in_dst_from": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Minimum nights at destination before return flight. Turns the search into a return search",
                    "title": "Nights In Dst From"
                  },
                  "nights_in_dst_to": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum nights at destination before return flight",
                    "title": "Nights In Dst To"
                  },
                  "one_for_city": {
                    "default": false,
                    "description": "If true, return only the single best result per destination city — useful for 'explore' searches with broad destinations",
                    "title": "One For City",
                    "type": "boolean"
                  },
                  "price_from": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Minimum total price filter in the specified currency",
                    "title": "Price From"
                  },
                  "price_to": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum total price filter in the specified currency",
                    "title": "Price To"
                  },
                  "ret_atime_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Earliest return arrival hour (0-23, local)",
                    "title": "Ret Atime From"
                  },
                  "ret_atime_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest return arrival hour (0-23, local)",
                    "title": "Ret Atime To"
                  },
                  "ret_dtime_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Earliest return departure hour (0-23, local)",
                    "title": "Ret Dtime From"
                  },
                  "ret_dtime_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest return departure hour (0-23, local)",
                    "title": "Ret Dtime To"
                  },
                  "ret_fly_days": {
                    "anyOf": [
                      {
                        "maxLength": 32,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Allowed return departure weekdays — comma-separated 0=Sun..6=Sat",
                    "title": "Ret Fly Days"
                  },
                  "returnDate": {
                    "anyOf": [
                      {
                        "maxLength": 10,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Return date in dd/mm/yyyy — the day to fly back, or the earliest return date of a range (omit for one-way)",
                    "title": "Returndate"
                  },
                  "returnDateFlexDays": {
                    "default": 0,
                    "description": "Search +/- this many days around returnDate (symmetric). Leave 0 when using returnDateTo",
                    "maximum": 10,
                    "minimum": 0,
                    "title": "Returndateflexdays",
                    "type": "integer"
                  },
                  "returnDateTo": {
                    "anyOf": [
                      {
                        "maxLength": 10,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest return date in dd/mm/yyyy for an explicit range [returnDate .. returnDateTo]. Requires returnDate; use instead of returnDateFlexDays; must be \u003e= returnDate",
                    "title": "Returndateto"
                  },
                  "select_airlines": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Only include flights operated by these airlines — comma-separated IATA codes, e.g. 'FR,U2,BA'. Mutually exclusive with exclude_airlines",
                    "title": "Select Airlines"
                  },
                  "sort": {
                    "default": "price",
                    "description": "Result ordering",
                    "enum": [
                      "price",
                      "duration",
                      "quality",
                      "date",
                      "popularity"
                    ],
                    "title": "Sort",
                    "type": "string"
                  },
                  "stopover_airports": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Only connect via these airports — comma-separated IATA codes. Constrains connecting flights only; direct (non-stop) flights are still returned.",
                    "title": "Stopover Airports"
                  },
                  "stopover_countries": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Only connect via these countries — comma-separated ISO 3166-1 alpha-2 codes, e.g. 'DE,AT'. Constrains connecting flights only; direct (non-stop) flights are still returned.",
                    "title": "Stopover Countries"
                  },
                  "stopover_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Minimum layover duration in hours",
                    "title": "Stopover From"
                  },
                  "stopover_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum layover duration in hours",
                    "title": "Stopover To"
                  }
                },
                "required": [
                  "flyFrom",
                  "flyTo",
                  "departureDate"
                ],
                "title": "search_flightsArguments",
                "type": "object"
              },
              "outputSchema": {
                "$defs": {
                  "SearchFlightsBaggageOutput": {
                    "description": "Included per-traveler baggage counts (see ``transform._included_baggage``).",
                    "properties": {
                      "cabinBag": {
                        "default": 0,
                        "title": "Cabinbag",
                        "type": "integer"
                      },
                      "checkedBag": {
                        "default": 0,
                        "title": "Checkedbag",
                        "type": "integer"
                      },
                      "personalItem": {
                        "default": 0,
                        "title": "Personalitem",
                        "type": "integer"
                      }
                    },
                    "title": "SearchFlightsBaggageOutput",
                    "type": "object"
                  },
                  "SearchFlightsItineraryOutput": {
                    "additionalProperties": true,
                    "properties": {
                      "baggage": {
                        "anyOf": [
                          {
                            "$ref": "#/$defs/SearchFlightsBaggageOutput"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null
                      },
                      "bookingUrl": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Bookingurl"
                      },
                      "id": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Id"
                      },
                      "imageId": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Imageid"
                      },
                      "inbound": {
                        "anyOf": [
                          {
                            "$ref": "#/$defs/SearchFlightsLegOutput"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null
                      },
                      "outbound": {
                        "anyOf": [
                          {
                            "$ref": "#/$defs/SearchFlightsLegOutput"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null
                      },
                      "price": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Price"
                      },
                      "priceFormatted": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Priceformatted"
                      },
                      "totalDurationSeconds": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Totaldurationseconds"
                      }
                    },
                    "title": "SearchFlightsItineraryOutput",
                    "type": "object"
                  },
                  "SearchFlightsLegOutput": {
                    "additionalProperties": true,
                    "properties": {
                      "arrivalTime": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Arrivaltime"
                      },
                      "cabinClass": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Cabinclass"
                      },
                      "departureTime": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Departuretime"
                      },
                      "durationSeconds": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Durationseconds"
                      },
                      "from": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "From"
                      },
                      "route": {
                        "items": {
                          "type": "string"
                        },
                        "title": "Route",
                        "type": "array"
                      },
                      "segments": {
                        "items": {
                          "$ref": "#/$defs/SearchFlightsSegmentOutput"
                        },
                        "title": "Segments",
                        "type": "array"
                      },
                      "stops": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Stops"
                      },
                      "to": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "To"
                      }
                    },
                    "title": "SearchFlightsLegOutput",
                    "type": "object"
                  },
                  "SearchFlightsPassengersOutput": {
                    "properties": {
                      "adults": {
                        "default": 0,
                        "title": "Adults",
                        "type": "integer"
                      },
                      "children": {
                        "default": 0,
                        "title": "Children",
                        "type": "integer"
                      },
                      "infants": {
                        "default": 0,
                        "title": "Infants",
                        "type": "integer"
                      }
                    },
                    "title": "SearchFlightsPassengersOutput",
                    "type": "object"
                  },
                  "SearchFlightsSegmentOutput": {
                    "additionalProperties": true,
                    "properties": {
                      "arrivalTime": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Arrivaltime"
                      },
                      "cabinClass": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Cabinclass"
                      },
                      "carrier": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Carrier"
                      },
                      "carrierName": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Carriername"
                      },
                      "departureTime": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Departuretime"
                      },
                      "durationSeconds": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Durationseconds"
                      },
                      "flightNumber": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Flightnumber"
                      },
                      "from": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "From"
                      },
                      "fromCity": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Fromcity"
                      },
                      "fromCountry": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Fromcountry"
                      },
                      "fromName": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Fromname"
                      },
                      "to": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "To"
                      },
                      "toCity": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Tocity"
                      },
                      "toCountry": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Tocountry"
                      },
                      "toName": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Toname"
                      }
                    },
                    "title": "SearchFlightsSegmentOutput",
                    "type": "object"
                  }
                },
                "additionalProperties": true,
                "description": "Wire shape for ``structuredContent`` (see ``transform.format_itineraries``).",
                "properties": {
                  "currency": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Currency"
                  },
                  "error": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Error"
                  },
                  "itineraries": {
                    "items": {
                      "$ref": "#/$defs/SearchFlightsItineraryOutput"
                    },
                    "title": "Itineraries",
                    "type": "array"
                  },
                  "passengers": {
                    "anyOf": [
                      {
                        "$ref": "#/$defs/SearchFlightsPassengersOutput"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null
                  },
                  "query": {
                    "title": "Query",
                    "type": "string"
                  },
                  "resultsCount": {
                    "default": 0,
                    "title": "Resultscount",
                    "type": "integer"
                  },
                  "searchTimeMs": {
                    "default": 0,
                    "title": "Searchtimems",
                    "type": "integer"
                  }
                },
                "required": [
                  "query"
                ],
                "title": "SearchFlightsStructuredOutput",
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true
              }
            },
            {
              "name": "feedback-to-devs",
              "title": "Send Feedback to Developers",
              "description": "Send feedback, bug reports, or feature requests about the Kiwi.com search-flight MCP tool to its developers. This channel is ONLY for the flight search tool — search results, pricing, itineraries, filters, or errors in search responses. Do NOT use it for other MCP servers, Claude/app behaviour, account or booking management, voice mode, or unrelated Kiwi.com features; those won't reach the right team. Include error messages, logs, or context that would help the developers reproduce the issue.",
              "inputSchema": {
                "properties": {
                  "text": {
                    "description": "The content of the feedback. This is ONLY for the Kiwi.com search-flight MCP tool (search results, pricing, itineraries, filters, search errors) — not other MCP servers, Claude/app behaviour, or general Kiwi.com products. Include error messages, logs, or context that would help the developers reproduce the issue.",
                    "maxLength": 3000,
                    "minLength": 1,
                    "title": "Text",
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "title": "feedback_to_devsArguments",
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "title": "feedback_to_devsDictOutput",
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            }
          ],
          "schemaTokens": 4527,
          "changedAt": "2026-10-08T21:33:51.894639Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 4527,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 2
            },
            "findings": [
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "search-flight",
                "message": "the description is about 519 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "search-flight",
                "message": "the definition is about 4,192 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC29",
                "severity": "note",
                "message": "about 561 tokens (12% of the definitions) are titles that repeat property or function names",
                "fix": "Strip \"title\" keys that only restate a name before listing tools."
              }
            ]
          }
        },
        "updatedAt": "2026-10-08T21:58:00.546184217Z"
      }
    },
    "verify": {
      "accepts": "a page on kiwi.com or one of its subdomains, or the README of github.com/alpic-ai/kiwi-mcp-server-public",
      "badgeUrl": "https://www.anchorterminal.com/badges/kiwi-mcp.svg",
      "body": {
        "slug": "kiwi-mcp",
        "url": "the page with the badge or the link"
      },
      "docs": "https://www.anchorterminal.com/builders/#verify",
      "effect": "none, it never changes a grade, rank or review",
      "endpoint": "https://www.anchorterminal.com/api/v1/verify",
      "listingUrl": "https://www.anchorterminal.com/tools/kiwi-mcp",
      "mcpTool": "verify_listing",
      "recheck": "weekly; two failed checks in a row and it lapses, a later pass restores it",
      "snippets": {
        "html": "\u003ca href=\"https://www.anchorterminal.com/tools/kiwi-mcp\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/kiwi-mcp.svg\" alt=\"Kiwi.com MCP Server on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e",
        "markdown": "[![Kiwi.com MCP Server on Anchor Terminal](https://www.anchorterminal.com/badges/kiwi-mcp.svg)](https://www.anchorterminal.com/tools/kiwi-mcp)",
        "link": "\u003ca href=\"https://www.anchorterminal.com/tools/kiwi-mcp\"\u003eKiwi.com MCP Server on Anchor Terminal\u003c/a\u003e"
      }
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/kiwi-mcp",
    "json": "https://www.anchorterminal.com/tools/kiwi-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/kiwi-mcp.md",
    "slim": "https://www.anchorterminal.com/tools/kiwi-mcp.min.md"
  },
  "markdown": "## Overview\n\n**Grade D · 51.9/100 · rank #571 of 722 · #5 in Travel \u0026 booking · not agent-ready · confidence medium**\n\n\n## Assessment\n\nA keyless flight search with one typed, read-only tool, 47 filters and a booking link on every itinerary. It can't book, hold, change or cancel, and it has no published rate limits, changelog, terms or version. Each search returns 15 itineraries with no way to ask for fewer.\n\n## Facts\n\n| Field | Value |\n| --- | --- |\n| Vendor | Kiwi.com s.r.o. (https://www.kiwi.com) |\n| Kind | MCP server |\n| Category | Travel \u0026 booking (https://www.anchorterminal.com/categories/travel) |\n| Transport | Streamable HTTP |\n| Endpoint | `https://mcp.kiwi.com` |\n| Auth | None · No credentials. `https://mcp.kiwi.com` answered `initialize`, `tools/list` and `tools/call` with no key, token or session header on 8 October 2026, and `/.well-known/oauth-protected-resource` returns 404. Access is self-serve by adding the URL to an MCP client. |\n| Pricing | Free (Free) · Free to call, with no account, card or sandbox step, as observed on 8 October 2026. No page states a price or a usage limit for the server. Travellers pay the fare on kiwi.com after following a result's booking link, under Kiwi.com's terms and conditions (https://www.kiwi.com/en/pages/content/legal/). |\n| x402 | No · No x402, MPP or L402 in the README or in the server's responses, which need no payment (checked 2026-10-08). |\n| Licence | Proprietary hosted service. The public repository holds only a README and has no licence file |\n| Tools exposed | 2 |\n| Source | https://github.com/alpic-ai/kiwi-mcp-server-public |\n| Docs | https://github.com/alpic-ai/kiwi-mcp-server-public |\n| llms.txt | not found |\n| Last release | 2025-08-07 |\n| GitHub stars | 12 (as of 2026-10-08) |\n| Endpoint | `https://mcp.kiwi.com`, streamable HTTP, replies as `text/event-stream`. Accepted protocol version 2025-06-18. Server name `kiwicom-flight-search`, version empty |\n| Tools | `search-flight` (read-only, idempotent) and `feedback-to-devs` (sends up to 3,000 characters of text to Kiwi.com). No prompts or resources |\n| Search inputs | Required `flyFrom`, `flyTo` and `departureDate` (dd/mm/yyyy). 44 optional filters. Up to 9 adults, 8 children and 4 infants. Currency defaults to EUR, sort to price |\n| Search output | `query`, `currency`, `passengers`, `resultsCount`, `itineraries`, `searchTimeMs` and `error`. Each itinerary has price, duration, baggage counts, legs with segments, and `bookingUrl`. 15 itineraries in each of two searches |\n| Booking | On kiwi.com through the booking link. Not available through the server |\n| Credentials | None |\n| Rate limits | Not published |\n| Errors | Validation failures return a result with `isError` false and a Pydantic message in `error` |\n| Status | status.kiwi.com on Statuspage, with Search and Search API components and no MCP component |\n| Security programme | security.txt, a disclosure policy and a HackerOne bug bounty |\n| Capabilities | travel.flights, travel.search |\n| Tags | hosted, mcp, no-auth, free, flights, search-only, status-page, bug-bounty |\n| JSON | https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json |\n\n## Score breakdown (methodology v0.4, October 2026 research run)\n\nAssessed 2026-10-08 from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/#checklist). Confidence: medium. Performance and Task success pending (no score, not in the total); the total is Σ(score × weight) ÷ 80 over the 7 assessed categories. \"This run\" is each category's share of the 100 points.\n\n| Category | Weight | This run | Score (0–100) | Points |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% | 20 | 45 | 9.0 |\n| Performance | 10% | pending | pending | n/a |\n| Schema \u0026 documentation | 13% | 16.2 | 55 | 8.9 |\n| Agent ergonomics | 13% | 16.2 | 66 | 10.7 |\n| Security \u0026 auth | 14% | 17.5 | 54 | 9.4 |\n| Payments \u0026 pricing | 10% | 12.5 | 55 | 6.9 |\n| Task success | 10% | pending | pending | n/a |\n| Maintenance \u0026 community | 7% | 8.8 | 13 | 1.1 |\n| Transparency \u0026 trust (editorial 44, provenance 87) | 7% | 8.8 | 66 | 5.8 |\n| Negative events | up to −15 | up to −15 | none recorded | 0 |\n| **Total** | | | | **51.9 → D** |\n\n### Why each score\n\n- Reliability 45: status.kiwi.com is a Statuspage site with components for Search, Search API, Booking and payments, and none for the MCP server (15 of 20). Its incident feed's newest entry is dated 13 October 2021, so the last 90 days are clean on paper, but five years without an entry on a large travel site is weak evidence of a kept record (20 of 30). No rate limits found in the README or the tool definitions (0). No 429, Retry-After or backoff guidance found (0). No SLA (0). Nothing calls the server beta, although `serverInfo.version` is empty and the README's VS Code snippet says 0.0.1 (10).\n- Performance: Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes.\n- Schema \u0026 documentation 55: Both tools carry typed JSON Schema inputs and an output schema, read from `tools/list` on 8 October 2026 (25). No llms.txt on kiwi.com (404) and no Markdown docs beyond the README (0). The `search-flight` description states its purpose, when to call it and the result shape, and `feedback-to-devs` says when not to use it (15 of 20). 47 typed properties with ranges, two enums and three required fields, but dates are plain strings with no pattern, airline and airport lists are comma-separated strings, and the README says flexibility is up to 3 days where the schema allows 10 (11 of 15). Two example prompts in the README, no documented error responses (4 of 15). No changelog and no server version (0).\n- Agent ergonomics 66: Two tools, but their definitions total 19.3 KB of JSON because `search-flight` has 47 parameters and display instructions in its description (20 of 25). Filters cover price, stops, airlines, times, layovers, bags, weekdays and five sort orders, with no result limit or pagination. Two searches each returned 15 itineraries, 25 KB and 34 KB of text, with the same data again in `structuredContent` (10 of 20). A rejected input returned a raw Pydantic validation message in an `error` field with `isError` false, and no error list is published (6 of 20). `search-flight` is annotated read-only and idempotent, and `feedback-to-devs` not read-only and not destructive (20). Three required inputs, defaults for the rest and place names accepted. A date sent as 2026-11-12 was accepted although the schema asks for dd/mm/yyyy. No SDK, MCP only (10 of 15).\n- Security \u0026 auth 54: No credentials at all. There is no secret to leak, and no way for an operator to scope, rotate or revoke access. `https://mcp.kiwi.com/.well-known/oauth-protected-resource` returns 404 (20 of 30). Search is read-only and nothing can spend money. The one write, `feedback-to-devs`, sends up to 3,000 characters of free text to Kiwi.com with no confirmation step (14 of 20). Results are structured fare data from Kiwi.com's own index with little free text. The tool description tells the model how to lay out results, to show the booking link and to close with a fun fact. No injection guidance found (8 of 15). No audit log or per-call view for an operator (0). security.txt with a contact, a disclosure policy that promises a reply in two working days, and a HackerOne bug bounty. No SOC 2 or ISO 27001 statement found on the pages read (12 of 20).\n- Payments \u0026 pricing 55: No x402, MPP or L402 (0). The server cost nothing to call on 8 October 2026 and there is nothing to buy, but no page states that in writing, and fares include Kiwi.com's own charges without a published schedule (15 of 20). Free with no card and no account (20). Keyless, so an agent connects with no human signup (20).\n- Task success: Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored.\n- Maintenance \u0026 community 13: The only dated public change is the README repository's last commit on 7 August 2025, 14 months ago. The live server has changed since, because it now lists a second tool and filters the README doesn't describe, but nothing dates those changes (10 of 30). No releases or changelog entries in the last 90 days (0). Both issues on the public repository, opened 3 February and 9 September 2026, have no reply. `feedback-to-devs` is a support channel of a kind (3 of 15). Not in the official MCP registry. A search for kiwi returned five unrelated or third-party servers (0). No package, dependencies or CI to read (0).\n- Transparency \u0026 trust 66: The server is closed source. The public repository holds one README and no licence file, and no terms name the MCP server, so the terms of use for the website and the booking terms and conditions are the nearest documents (10 of 30). The privacy policy, effective 7 September 2026, names Kiwi.com s.r.o. as controller and a data protection officer, lists data categories and purposes and gives a general retention of three years plus one. Its stated scope is the website and the mobile apps, and it doesn't mention MCP queries (20 of 30). No deprecation policy or dated notices (0). Infrastructure processors are named (Amazon Web Services, OVH, Hetzner, DigitalOcean, Akamai, Google Ireland) and transfers outside the EEA are described, without a full location list (14 of 20).\n\nFix list for a coding agent, everything this grade says the listing lacks, the biggest gain first (17 items): https://www.anchorterminal.com/fixes/kiwi-mcp.md (JSON https://www.anchorterminal.com/fixes/kiwi-mcp.json)\n\n### What we couldn't check\n\n- When the live server last changed. It lists a tool and filters the README of 7 August 2025 doesn't describe, and nothing public dates them\n- Rate limits. None are published and we made six requests, too few to meet one\n- Whether Kiwi.com or Alpic operates the endpoint. The README repository belongs to alpic-ai and names Kiwi.com as author, and responses come from a uvicorn server behind Google and Fastly on mcp.kiwi.com\n- Which terms govern the MCP server. None name it, so `provenance.terms` points at the booking terms and conditions that apply once a user follows a booking link\n- Whether booking links carry a referral or pricing difference. `https://kiwi.com/u/\u003cid\u003e` redirects to www.kiwi.com and we didn't follow it further\n- unchecked: a launch announcement. A search of media.kiwi.com for MCP showed no result to our reader\n- unchecked: SOC 2, ISO 27001 or PCI statements. None on the security, privacy or terms pages we read, and we looked no further\n- The batch lead said one tool. The server lists two, `search-flight` and `feedback-to-devs`\n\n### Sources\n\n- MCP endpoint, `initialize`, `tools/list` and three `tools/call` requests made by us: \u003chttps://mcp.kiwi.com\u003e (seen 2026-10-08)\n- public README repository, three commits on 7 August 2025: \u003chttps://github.com/alpic-ai/kiwi-mcp-server-public\u003e (seen 2026-10-08)\n- repository metadata and issues: \u003chttps://api.github.com/repos/alpic-ai/kiwi-mcp-server-public/issues?state=all\u003e (seen 2026-10-08)\n- status page summary: \u003chttps://status.kiwi.com/api/v2/summary.json\u003e (seen 2026-10-08)\n- status page incident feed: \u003chttps://status.kiwi.com/api/v2/incidents.json\u003e (seen 2026-10-08)\n- terms and conditions, applying from 11 August 2026: \u003chttps://www.kiwi.com/en/pages/content/legal/\u003e (seen 2026-10-08)\n- terms of use for the website, effective 30 June 2026: \u003chttps://www.kiwi.com/en/pages/content/terms/\u003e (seen 2026-10-08)\n- privacy policy, effective 7 September 2026: \u003chttps://www.kiwi.com/en/pages/content/privacy/\u003e (seen 2026-10-08)\n- security.txt: \u003chttps://www.kiwi.com/.well-known/security.txt\u003e (seen 2026-10-08)\n- security disclosure policy: \u003chttps://www.kiwi.com/us/pages/security\u003e (seen 2026-10-08)\n- official MCP registry search for kiwi: \u003chttps://registry.modelcontextprotocol.io/v0.1/servers?search=kiwi\u003e (seen 2026-10-08)\n- RDAP record for kiwi.com: \u003chttps://rdap.verisign.com/com/v1/domain/kiwi.com\u003e (seen 2026-10-08)\n\n## Who's behind it (provenance 87/100, checked 2026-10-08)\n\n| Check | Finding | Points |\n| --- | --- | --- |\n| Legal entity named | Kiwi.com s.r.o. | 20/20 |\n| Domain age | kiwi.com, registered 1994-11-23 (31 years) | 15/15 |\n| Endpoint on the vendor's domain | mcp.kiwi.com | 15/15 |\n| Terms of service | read, states 3 of the 7 things a reader expects | 6.6/10 |\n| Privacy policy | read, states 8 of the 8 things a reader expects | 10/10 |\n| Status page | status.kiwi.com | 10/10 |\n| Changelog | not found | 0/10 |\n| security.txt | valid | 10/10 |\n\nThe terms and conditions and the privacy policy name Kiwi.com s.r.o., Rohanské nábřeží 678/25, 186 00 Prague 8-Karlín, Czech Republic, company ID 29352886. US consumers contract with Kiwi.com, Inc. of Fort Lauderdale, Florida.\n\nNo terms name the MCP server. `terms` points at the booking terms and conditions (applying from 11 August 2026), which govern what a user buys through a booking link. The website's terms of use (effective 30 June 2026) are a separate page and forbid commercial use of the website.\n\nThe privacy policy (effective 7 September 2026) states its scope as the website and the mobile apps and doesn't mention the MCP server.\n\nwww.kiwi.com/.well-known/security.txt gives a contact, a policy page and a HackerOne programme and has no Expires field. mcp.kiwi.com/.well-known/security.txt returns 404.\n\nThe README repository is under the alpic-ai GitHub organisation, not a Kiwi.com one, and names Kiwi.com as author.\n\nRDAP for kiwi.com gives a registration date of 1994-11-23.\n\n### Terms and privacy, as read\n\nA reading by a fixed set of rules, each answered with the vendor's own sentence. Not legal advice.\n\n**Terms of service** (https://www.kiwi.com/en/pages/content/legal/), read 2026-10-08, gives no date, states 3 of the 7 things a reader expects.\n\n- To know. Requires arbitration or waives class actions. \"…THIS AGREEMENT CONTAINS IMPORTANT INFORMATION THAT APPLIES TO YOU ABOUT RESOLUTION OF DISPUTES THROUGH BINDING ARBITRATION RATHER THAN IN COURT, INCLUDING A WAIVER OF YOUR RIGHT TO BRING CLAIMS AS CLASS ACTIONS AND THE RIGHT TO OPT OUT, AND A LIMITATION ON YOUR RIGHT TO BRING CLAIMS AGAINST KIWI.COM, INC.\"\n- Not found in the text. Gives the date it was last updated.\n- Names the governing law or courts. The law of Czech Republic.\n- Not found in the text. States a limit on its liability.\n- Not found in the text. Says how changes to the terms are announced.\n- Not found in the text. Refers to a service level or uptime commitment.\n- Also in the text (2026-10-08). When Kiwi.com cancels and reorders the same services at a lower price, it keeps the difference as its service fee. \"Any difference will be kept by Kiwi.com as the Kiwi.com Service Fee.\"\n- Also in the text (2026-10-08). Where a time-limited refund choice expires, Kiwi.com may pay the refund as Kiwi.com Credit. \"In such a case, you agree that upon expiry of the offer, Kiwi.com may give you the refund in Kiwi.com Credit.\"\n- Also in the text (2026-10-08). Kiwi.com charges a fee of 59 euros for every carriage when it processes a no-show refund. \"You hereby agree that for the processing of these No-Show Refunds, we shall charge you a fee amounting to €59 for every Carriage.\"\n\n**Privacy policy** (https://www.kiwi.com/en/pages/content/privacy/), read 2026-10-08, dated 2026-09-07, states 8 of the 8 things a reader expects.\n\n- To know. Says it sells personal data or shares it for advertising. \"We share an encrypted identifier (e.g., a hashed email address) with platforms including Meta for Business, Google Ads, and TikTok, so they can match it to your profile there and show you tailored offers.\"\n- Gives the date it was last updated. Last updated 2026-09-07.\n- Says how long data is kept. Names a period of 4 years.\n- Says whether personal data is sold or shared for advertising. Says it does not sell personal data.\n- Gives a privacy contact. privacy-dpo@kiwi.com.\n- Also in the text (2026-10-08). Customer support is handled mainly by an AI agent. \"Customer support at Kiwi is primarily handled by our AI agent.\"\n- Also in the text (2026-10-08). Kiwi.com uses Verza conversation data to improve Verza, and minimises, aggregates or de-identifies it where possible. \"When using conversation data to improve Verza, we minimize, aggregate, or de-identify the data wherever possible.\"\n- Also in the text (2026-10-08). After a fraud report to a bank, Kiwi.com may check public social media for a link to the booker or signs the trip was taken. \"If you report a purchase to your bank as fraudulent, we may check publicly available social media to establish whether you are connected to the person who made the Booking, or whether you published anything indicating you took the trip (for example, photos from the airport).\"\n\n## Live (updated 2026-10-08 21:58 UTC)\n\n- Right now: up, HTTP 200, 140 ms, checked 2026-10-08 21:53 UTC (mcp-initialize on `https://mcp.kiwi.com`)\n- Uptime 24h 100.0% (28 probes) · 30 days 100.0% (28 probes) · p50 144 ms · p95 202 ms\n- Vendor status page: minor, Minor Service Outage\n- Tools it lists (2, about 4,527 tokens of context, `tools/list` without credentials over MCP 2026-07-28, checked 2026-10-08 21:33 UTC):\n  - `search-flight` (read-only): # Search for flights Searches Kiwi.com for available flights between two locations for the given dates and passengers. City or airport names are resolved…\n  - `feedback-to-devs` (writes): Send feedback, bug reports, or feature requests about the Kiwi.com search-flight MCP tool to its developers. This channel is ONLY for the flight search tool —…\n- How its tools read to an agent (0 errors, 2 warnings, 1 note, about 4,527 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC07 search-flight: the description is about 519 tokens\n  - warn TC22 search-flight: the definition is about 4,192 tokens\n  - note TC29 server: about 561 tokens (12% of the definitions) are titles that repeat property or function names\n- Always current: https://www.anchorterminal.com/api/v1/live/kiwi-mcp.json\n\n## Probe metrics\n\nNot measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. Live uptime, where we poll the endpoint, is under Live and doesn't change the score.\n\n## Strengths\n\n- No account, key or OAuth. An `initialize` and a `tools/call` to `https://mcp.kiwi.com` answered without credentials on 8 October 2026\n- `search-flight` carries a typed input schema with 47 properties, three of them required, and an output schema\n- Both tools carry annotations. `search-flight` is marked read-only and idempotent\n- City and airport names are resolved by the server, so no separate location lookup is needed\n- Kiwi.com publishes a security.txt, a disclosure policy and a HackerOne bug bounty\n\n## Weaknesses\n\n- Search only. Booking, payment, changes and cancellations happen on kiwi.com through the `bookingUrl` in each result\n- No rate limits, 429 guidance, SLA, changelog or deprecation policy found, and `serverInfo.version` is empty\n- No result limit or pagination. Two searches returned 15 itineraries each, 25 KB and 34 KB of text, repeated in `structuredContent`\n- Validation failures come back as a raw Pydantic message in an `error` field with `isError` false\n- No terms name the MCP server, and the privacy policy's stated scope is the website and mobile apps\n- The public repository is a README last changed on 7 August 2025, with no licence, and it omits the second tool and most filters\n\n## Before you call it (notes for agents)\n\n1. POST to `https://mcp.kiwi.com` itself. `/mcp` returns 404, and responses arrive as `text/event-stream` even for a single reply\n2. Send dates as dd/mm/yyyy and set `currency`, which defaults to EUR\n3. Check the `error` field of every result. A rejected input returns `resultsCount` 0 with `isError` false\n4. Narrow with `price_to`, `max_sector_stopovers` and `sort`. There is no limit parameter and each search returns 15 itineraries\n5. Give the user `bookingUrl` to book. Don't call `feedback-to-devs` with user data, because it sends free text to Kiwi.com\n\n## Connect\n\nClaude Code:\n\n```bash\nclaude mcp add --transport http kiwi-com-flight-search https://mcp.kiwi.com\n```\n\nMCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"kiwi-com-flight-search\": {\n      \"url\": \"https://mcp.kiwi.com\"\n    }\n  }\n}\n```\n\nThrough letme (picks today, calling later): https://letme.dev/kiwi-mcp. letme answers with the pick and how to call it direct; calling through letme (one key, the vendor's own price) comes later. How it works: https://www.anchorterminal.com/letme/index.md\n\n## Similar tools\n\nRanked by shared capabilities, then score. Same-category tools with no shared capability key are listed last.\n\n| Tool | Grade | Score | Rank | Shared capabilities | x402 | Markdown |\n| --- | --- | --- | --- | --- | --- | --- |\n| Duffel Flights and Stays API | B | 66.7 | 230 | travel.flights, travel.search | no | https://www.anchorterminal.com/tools/duffel.md |\n| LetsFG | B | 64 | 287 | travel.flights, travel.search | no | https://www.anchorterminal.com/tools/letsfg.md |\n| LiteAPI (Nuitee Connect) | D | 53.1 | 548 | travel.flights, travel.search | no | https://www.anchorterminal.com/tools/liteapi.md |\n| Travelport TripServices APIs | E | 45.9 | 653 | travel.flights, travel.search | no | https://www.anchorterminal.com/tools/travelport.md |\n| Skyscanner Travel APIs | E | 45.6 | 655 | travel.flights, travel.search | no | https://www.anchorterminal.com/tools/skyscanner.md |\n| FlightClaw | E | 45.3 | 659 | travel.flights, travel.search | no | https://www.anchorterminal.com/tools/flightclaw.md |\n\n## Panel reviews (0)\n\nReviewed by the Anchor panel (https://www.anchorterminal.com/reviewers/index.md): .\n\nDesk reviews, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. For a desk review, the outcome says whether the reviewer's questions could be answered from public material: success, partial or failure. How reviews work: https://www.anchorterminal.com/reviews/how-it-works.md\n\n## Notable\n\n- The server lists two tools, `search-flight` and `feedback-to-devs`. The README describes only the first (source: \u003chttps://mcp.kiwi.com, `tools/list` on 8 October 2026\u003e)\n- `search-flight` takes 47 parameters, among them date ranges up to 10 days either side, passenger counts, cabin class, price, stops, airlines, departure and arrival hours, layovers, bags, weekdays and five sort orders (source: \u003chttps://mcp.kiwi.com\u003e)\n- Each itinerary carries a short `bookingUrl` of the form `https://kiwi.com/u/\u003cid\u003e`, which redirects to www.kiwi.com. The server has no tool to book, hold, change or cancel (source: \u003chttps://mcp.kiwi.com\u003e)\n- The `search-flight` description contains instructions to the model, to render a table, show the booking link, recommend an option and end with a fun fact about the destination (source: \u003chttps://mcp.kiwi.com\u003e)\n- The public repository belongs to alpic-ai, names Kiwi.com as author, holds a README and no code, and has three commits, all on 7 August 2025 (source: \u003chttps://github.com/alpic-ai/kiwi-mcp-server-public\u003e)\n- status.kiwi.com has components for Search, Search API, Booking and payments, none for the MCP server, and its newest incident is dated 13 October 2021 (source: \u003chttps://status.kiwi.com/api/v2/incidents.json\u003e)\n- Not in the official MCP registry. A search for kiwi returns five servers, none under a kiwi.com namespace (source: \u003chttps://registry.modelcontextprotocol.io/v0.1/servers?search=kiwi\u003e)\n\n## Compare\n\n- [Duffel Flights and Stays API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/duffel-vs-kiwi-mcp.md): B 66.7 vs D 51.9\n- [FlightClaw vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/flightclaw-vs-kiwi-mcp.md): E 45.3 vs D 51.9\n- [Kiwi.com MCP Server vs LetsFG](https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg.md): D 51.9 vs B 64\n- [Kiwi.com MCP Server vs LiteAPI (Nuitee Connect)](https://www.anchorterminal.com/compare/kiwi-mcp-vs-liteapi.md): D 51.9 vs D 53.1\n- [Kiwi.com MCP Server vs Skyscanner Travel APIs](https://www.anchorterminal.com/compare/kiwi-mcp-vs-skyscanner.md): D 51.9 vs E 45.6\n- [Kiwi.com MCP Server vs Travelport TripServices APIs](https://www.anchorterminal.com/compare/kiwi-mcp-vs-travelport.md): D 51.9 vs E 45.9\n- [Booking.com Demand API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/booking-demand-api-vs-kiwi-mcp.md): E 38.1 vs D 51.9\n- [Expedia Group Rapid API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/expedia-rapid-vs-kiwi-mcp.md): E 42.8 vs D 51.9\n- [Hotelbeds Hotel Booking API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp.md): F 36.3 vs D 51.9\n- [Kiwi.com MCP Server vs ETG API (RateHawk)](https://www.anchorterminal.com/compare/kiwi-mcp-vs-ratehawk.md): D 51.9 vs D 53\n\n## Verify this listing\n\nFor the vendor. The badge or a plain link to this page verifies the listing, from a page on kiwi.com or one of its subdomains, or the README of github.com/alpic-ai/kiwi-mcp-server-public. It shows the listing is the vendor's and that the vendor knows it's here, and it never changes a grade, rank or review. The vendor sends the page's address to `POST https://www.anchorterminal.com/api/v1/verify` as `{\"slug\": \"kiwi-mcp\", \"url\": \"…\"}`, or calls the `verify_listing` tool at https://www.anchorterminal.com/mcp. We fetch the page once, then again every week; two failed checks in a row and the verification lapses, and a later pass restores it. What we check: https://www.anchorterminal.com/builders/index.md#verify\n\nHTML badge:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/kiwi-mcp\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/kiwi-mcp.svg\" alt=\"Kiwi.com MCP Server on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e\n```\n\nMarkdown badge, for a README:\n\n```markdown\n[![Kiwi.com MCP Server on Anchor Terminal](https://www.anchorterminal.com/badges/kiwi-mcp.svg)](https://www.anchorterminal.com/tools/kiwi-mcp)\n```\n\nPlain link:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/kiwi-mcp\"\u003eKiwi.com MCP Server on Anchor Terminal\u003c/a\u003e\n```\n\n## Share this listing\n\nFor the vendor. Sharing assets for social media, two PNGs of 1200 × 630 that say Kiwi.com MCP Server is listed on Anchor Terminal, with the vendor's logo and this page's address and no grade or score.\n\n- Dark: https://www.anchorterminal.com/assets/share/kiwi-mcp-dark.png\n- Light: https://www.anchorterminal.com/assets/share/kiwi-mcp-light.png\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Travel \u0026 booking",
        "url": "https://www.anchorterminal.com/categories/travel"
      },
      {
        "name": "Kiwi.com MCP Server",
        "url": ""
      }
    ],
    "description": "Kiwi.com's remote MCP server searches the travel agency's flight inventory for one-way and return trips. It needs no account or key, and each result carries a link to book on kiwi.com.",
    "facts": [
      "rank #571 of 722",
      "None auth",
      "0 desk reviews"
    ],
    "h1": "Kiwi.com MCP Server",
    "image": "https://www.anchorterminal.com/assets/og/tools-kiwi-mcp.png",
    "path": "/tools/kiwi-mcp",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Kiwi.com MCP Server review for AI agents, grade D (51.9/100)",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/tools/kiwi-mcp"
  },
  "tokens": {
    "markdown": 6900,
    "slim": 1380
  },
  "version": 1
}
