{
  "data": {
    "a": {
      "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",
      "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"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "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"
      },
      "area": "domain-data",
      "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
      },
      "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-08T22:39:50.236687778Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 101,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 131,
          "p95ms24h": 202,
          "samples24h": 36,
          "samples30d": 36,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 36,
              "ok": 36
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.kiwi.com",
          "indicator": "minor",
          "summary": "Minor Service Outage",
          "checkedAt": "2026-10-08T22:39:26.625187285Z"
        },
        "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-08T22:39:50.236687778Z"
      }
    },
    "answer": "LetsFG scores 64 (B) on agent readiness against Kiwi.com MCP Server's 51.9 (D), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "letsfg",
      "name": "LetsFG",
      "vendor": "LetsFG",
      "vendorUrl": "https://letsfg.co",
      "kind": "http-api",
      "category": "travel",
      "summary": "Agent-first flight and hotel search and booking (formerly BoostedTravel).",
      "url": "https://www.anchorterminal.com/tools/letsfg",
      "markdownUrl": "https://www.anchorterminal.com/tools/letsfg.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/letsfg.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/letsfg.json",
      "repo": "https://github.com/LetsFG/LetsFG",
      "license": "MIT",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://letsfg.co/developers/api/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "letsfg-mcp"
        },
        {
          "registry": "pypi",
          "name": "letsfg"
        }
      ],
      "auth": "mixed",
      "authNotes": "Two lanes. The hosted MCP uses OAuth 2.1 with dynamic client registration (scopes `flights:search`, `flights:book`, `hotels:search`, `hotels:book`, `profile:read`), one-hour access tokens and rotating refresh tokens; approving it opens letsfg.co/connect, and a card is only asked for at the first booking through a 0.00 Revolut set-up. The REST API takes an `X-API-Key` (`letsfg_...`) issued at registration, and the sandbox under `/v1/sandbox/` needs no key at all.",
      "pricing": "freemium",
      "pricingNotes": "Search is billed look-to-book. Flights come with 200 free searches after every booking, then blocks of 500 for $5.00 ($0.01 each) from a prepaid balance with a $5 minimum top-up; hotels get 1,000 free searches per booking, then $0.005 each. A search that returns nothing or fails doesn't count. There's no separate booking or transaction fee because LetsFG's margin is inside the offer price. For hotels that's the supplier's cost plus 6.4 per cent (Revolut Pay or an EEA card) or 8.3 per cent (a card issued elsewhere); the flight margin isn't published. Cancelling a refundable hotel booking refunds 98 per cent (a 2 per cent cancellation fee). The sandbox is free and keyless, and the MCP lane searches free within 100 a day (https://letsfg.co/developers, https://github.com/LetsFG/LetsFG/blob/main/skills/hotel-search/SKILL.md).",
      "priceSummary": "$0.01 / call",
      "where": "both",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 24,
      "popularity": {
        "githubStars": 2100,
        "npmWeekly": 157,
        "pypiWeekly": 260,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://letsfg.co/developers/api/docs",
      "llmsTxt": "https://letsfg.co/llms.txt",
      "openapi": "https://letsfg.co/developers/api/openapi.json",
      "registryName": "io.github.LetsFG/letsfg",
      "capabilities": [
        "travel.flights",
        "travel.stays",
        "travel.booking",
        "travel.changes",
        "travel.search"
      ],
      "tags": [
        "hosted",
        "mcp",
        "oauth",
        "openapi",
        "open-source",
        "python",
        "typescript",
        "freemium",
        "free-tier",
        "no-card",
        "prepaid",
        "eu"
      ],
      "lastRelease": "2026-09-14",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64,
        "grade": "B",
        "agentReady": false,
        "rank": 287,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 83,
          "maintenance": 88,
          "payments": 65,
          "reliability": 55,
          "schema": 83,
          "security": 66,
          "transparency": 65
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": -7,
        "negativeNotes": [
          "-4, 2026-09-02 and 2026-09-08. Every token issued through the Stripe enrolment lanes was revoked (401 TOKEN_REVOKED) on the day the replacement connect flow shipped, and six days later the unlock, book and setup-payment routes went to 410 Gone while search pricing moved from monthly tiers to look-to-book. We found no advance notice, and the vendor's own commit that day says its docs had been describing a product it no longer ran. The 410 bodies name the replacement, so we deduct at the lower end. https://github.com/LetsFG/LetsFG/blob/main/docs/api-onboarding.md",
          "-3, current as of 2026-10-01. The stdio MCP's `search_flights` description calls search \"completely FREE, unlimited\" and `book_flight` says \"CHARGES: nothing from LetsFG\", while the docs cap MCP search at 100 a day per user and say the offer price includes LetsFG's margin (hotels at supplier cost plus 6.4 per cent, 8.3 per cent on non-EEA cards). https://github.com/LetsFG/LetsFG/blob/main/sdk/mcp/src/index.ts"
        ],
        "verdict": "Hosted MCP with OAuth 2.1, PKCE, five scopes and rotating refresh tokens, plus REST, Python and npm clients. Tickets are bought by a LetsFG booking agent after the hold, 4 to 11 minutes per the docs, and bookings can pause with questions.",
        "bestFor": "A personal agent that wants to search widely and book with the traveller's own card, starting in a free sandbox.",
        "strengths": [
          "Hosted MCP with OAuth 2.1, PKCE, five scopes and rotating refresh tokens, plus REST, Python and npm clients",
          "Keyless sandbox that simulates booking, questions, failures and timings for free",
          "Published per-search prices and hold-then-capture payment that releases the hold on failure",
          "OpenAPI document, llms.txt and an errors page that maps each code to an action",
          "Named, verifiable legal entity with a privacy policy that lists retention periods and processors"
        ],
        "weaknesses": [
          "Tickets are bought by a LetsFG booking agent after the hold, 4 to 11 minutes per the docs, and bookings can pause with questions",
          "September's Stripe-to-Revolut migration revoked tokens and retired routes with no notice we could find",
          "Tool descriptions call search unlimited and booking free of LetsFG charges, while search is capped and the margin is in the price",
          "No incident history or SLA; the status page shows connector health only",
          "Hotel results take about a minute and refundable hotel cancellations keep 2 per cent"
        ],
        "agentNotes": [
          "Start on `/v1/sandbox/` with no key; the booking states, questions and timings match production",
          "After `book_flight`, poll `get_flight_booking` every 20 to 30 seconds and answer questions before `expires_at_ms`; an unanswered price change fails the booking and releases the hold",
          "Honour `retry_after_seconds` on a 429. Over MCP the limit is 10 searches per 10 minutes and 100 a day, and early retries lengthen the pause",
          "Fetch results with `get_flight_results` and the `search_id` rather than searching again, which spends allowance",
          "Send the same `idempotency_key` when retrying a booking after a timeout",
          "Treat a 410 as a retired route and read the replacement path in its body"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64
          }
        ],
        "editorialScores": {
          "ergonomics": 83,
          "maintenance": 88,
          "payments": 65,
          "reliability": 55,
          "schema": 83,
          "security": 66,
          "transparency": 68
        },
        "provenanceScore": 61
      },
      "connect": {
        "install": "pip install letsfg",
        "http": "curl -X POST https://letsfg.co/developers/api/v1/sandbox/flights/search \\\n  -H \"X-API-Key: $LETSFG_API_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"origin\":\"LHR\",\"destination\":\"JFK\",\"date_from\":\"2026-11-10\",\"adults\":1,\"currency\":\"USD\"}'",
        "claudeCode": "claude mcp add --transport http letsfg https://letsfg.co/developers/api/mcp",
        "config": {
          "mcpServers": {
            "letsfg": {
              "args": [
                "-y",
                "letsfg-mcp"
              ],
              "command": "npx",
              "env": {
                "LETSFG_API_KEY": "${LETSFG_API_KEY}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/travel.flights",
        "tool": "https://letme.dev/letsfg"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Flight search above allowance",
          "unit": "call",
          "usd": 0.01,
          "note": "sold in blocks of 500 for $5.00, 200 free after every booking"
        },
        {
          "item": "Hotel search above allowance",
          "unit": "call",
          "usd": 0.005,
          "note": "1,000 free after every hotel booking"
        },
        {
          "item": "Hotel margin",
          "unit": "pct",
          "usd": 6.4,
          "note": "inside the offer price over supplier cost; 8.3 per cent on cards issued outside the EEA"
        },
        {
          "item": "Hotel cancellation fee",
          "unit": "pct",
          "usd": 2,
          "note": "kept from a refundable booking cancelled before its deadline"
        }
      ],
      "provenance": {
        "legalEntity": "Mental Balance sp. z o.o.",
        "domain": "letsfg.co",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://letsfg.co/terms",
        "privacy": "https://letsfg.co/privacy",
        "statusPage": "https://letsfg.co/developers/connectors/health",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-01",
        "notes": [
          "Mental Balance Sp. z o.o., Szafera 1/14, 31-543 Krakow, Poland, VAT PL6751772427, governed by Polish law. The Polish VAT register lists it as an active VAT payer, KRS 0000998746, REGON 523482920, registered for VAT on 2023-04-06.",
          "The official MCP registry entry (io.github.LetsFG/letsfg, 2026.5.77) now carries the LetsFG name.",
          "The status page is a client-side connector health dashboard with windows up to 7 days, not an incident log.",
          "The .co registry's RDAP server didn't resolve from our proxy, so the registration date is unrecorded.",
          "letsfg.co/.well-known/security.txt returned 404 on 30 September; SECURITY.md in the repository names security@letsfg.co."
        ],
        "score": 61
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/letsfg.json",
      "live": {
        "slug": "letsfg",
        "probe": {
          "target": "https://letsfg.co/developers/api/v1",
          "method": "get",
          "lastAt": "2026-10-08T22:39:51.0923046Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 102,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 130,
          "p95ms24h": 308,
          "samples24h": 269,
          "samples30d": 1970,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 254,
              "ok": 254
            }
          ]
        },
        "vendorStatus": {
          "page": "https://letsfg.co/developers/connectors/health",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T19:38:45.004787918Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "LetsFG/LetsFG",
            "version": "v2026.5.103",
            "released": "2026-10-02",
            "seenAt": "2026-10-08T16:18:45.134348866Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.LetsFG/letsfg",
            "version": "2026.5.77",
            "seenAt": "2026-10-08T02:42:52.272076636Z"
          },
          {
            "registry": "npm",
            "name": "letsfg-mcp",
            "version": "2026.5.78",
            "seenAt": "2026-10-08T16:18:43.133274082Z"
          },
          {
            "registry": "pypi",
            "name": "letsfg",
            "version": "2026.5.103",
            "released": "2026-10-02",
            "seenAt": "2026-10-08T16:18:44.420232478Z"
          }
        ],
        "githubStars": 2122,
        "npmWeekly": 473,
        "pypiWeekly": 561,
        "securityTxt": {
          "url": "https://letsfg.co/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:45.916001288Z"
        },
        "llmsTxt": {
          "url": "https://letsfg.co/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-08T14:00:34.484633785Z"
        },
        "domain": {
          "domain": "letsfg.co",
          "checkedAt": "2026-10-04T13:08:11.061821195Z"
        },
        "pages": [
          {
            "url": "https://letsfg.co/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:21:32.943195847Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bc9de8636e2c"
          },
          {
            "url": "https://letsfg.co/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:21:35.219954776Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d6d29822c2bc"
          }
        ],
        "updatedAt": "2026-10-08T22:39:51.0923046Z"
      }
    },
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Kiwi.com s.r.o.",
        "b": "LetsFG",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.kiwi.com",
        "b": "https://letsfg.co/developers/api/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP",
        "b": "HTTP, Streamable HTTP, stdio",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "free",
        "b": "$0.01 per call",
        "name": "Price for travel flights"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted service. The public repository holds only a README and has no licence file",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "2",
        "b": "24",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.github.LetsFG/letsfg",
        "name": "MCP registry"
      },
      {
        "a": "2025-08-07",
        "b": "2026-09-14",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-09-19",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-07",
        "b": "2026-09-19",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "12 stars",
        "b": "2.1k stars, 157 npm/wk, 260 PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "LetsFG scores 64 (B) on agent readiness against Kiwi.com MCP Server's 51.9 (D), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Kiwi.com MCP Server or LetsFG?"
      },
      {
        "answer": "Kiwi.com MCP Server, at free against $0.01 per call for LetsFG. These are the vendors' published prices for the job.",
        "question": "Which is cheaper for travel flights, Kiwi.com MCP Server or LetsFG?"
      },
      {
        "answer": "Kiwi.com MCP Server needs no key. LetsFG takes an API key or an OAuth sign-in.",
        "question": "Do Kiwi.com MCP Server and LetsFG need an API key?"
      },
      {
        "answer": "Yes. Kiwi.com MCP Server has a hosted endpoint at https://mcp.kiwi.com and LetsFG at https://letsfg.co/developers/api/v1.",
        "question": "Can an agent call Kiwi.com MCP Server and LetsFG without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Kiwi.com MCP Server. LetsFG is open source (MIT).",
        "question": "Are Kiwi.com MCP Server and LetsFG open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "No key needed to call it",
          "No incidents deducted, where LetsFG loses 7 points for them"
        ],
        "goodFor": "An assistant that looks up fares and hands the user a link to book on kiwi.com, with no setup.",
        "slug": "kiwi-mcp",
        "watchFor": "Search only. Booking, payment, changes and cancellations happen on kiwi.com through the `bookingUrl` in each result"
      },
      {
        "aheadOn": [
          "Reliability, 55 against 45",
          "Schema \u0026 documentation, 83 against 55",
          "Agent ergonomics, 83 against 66",
          "Security \u0026 auth, 66 against 54",
          "Payments \u0026 pricing, 65 against 55",
          "Maintenance \u0026 community, 88 against 13"
        ],
        "also": [
          "Runs on your own machine",
          "Free to start without a card",
          "Open source"
        ],
        "goodFor": "A personal agent that wants to search widely and book with the traveller's own card, starting in a free sandbox.",
        "slug": "letsfg",
        "watchFor": "Tickets are bought by a LetsFG booking agent after the hold, 4 to 11 minutes per the docs, and bookings can pause with questions"
      }
    ],
    "job": {
      "capability": "travel.flights",
      "name": "Travel flights"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/booking-demand-api-vs-letsfg.json",
        "title": "Booking.com Demand API vs LetsFG",
        "url": "https://www.anchorterminal.com/compare/booking-demand-api-vs-letsfg"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expedia-rapid-vs-letsfg.json",
        "title": "Expedia Group Rapid API vs LetsFG",
        "url": "https://www.anchorterminal.com/compare/expedia-rapid-vs-letsfg"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-letsfg.json",
        "title": "Hotelbeds Hotel Booking API vs LetsFG",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-letsfg"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letsfg-vs-ratehawk.json",
        "title": "LetsFG vs ETG API (RateHawk)",
        "url": "https://www.anchorterminal.com/compare/letsfg-vs-ratehawk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-kiwi-mcp.json",
        "title": "Duffel Flights and Stays API vs Kiwi.com MCP Server",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-kiwi-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-letsfg.json",
        "title": "Duffel Flights and Stays API vs LetsFG",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-letsfg"
      },
      {
        "json": "https://www.anchorterminal.com/compare/flightclaw-vs-kiwi-mcp.json",
        "title": "FlightClaw vs Kiwi.com MCP Server",
        "url": "https://www.anchorterminal.com/compare/flightclaw-vs-kiwi-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/flightclaw-vs-letsfg.json",
        "title": "FlightClaw vs LetsFG",
        "url": "https://www.anchorterminal.com/compare/flightclaw-vs-letsfg"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-liteapi.json",
        "title": "Kiwi.com MCP Server vs LiteAPI (Nuitee Connect)",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-liteapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-skyscanner.json",
        "title": "Kiwi.com MCP Server vs Skyscanner Travel APIs",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-skyscanner"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-travelport.json",
        "title": "Kiwi.com MCP Server vs Travelport TripServices APIs",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-travelport"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letsfg-vs-liteapi.json",
        "title": "LetsFG vs LiteAPI (Nuitee Connect)",
        "url": "https://www.anchorterminal.com/compare/letsfg-vs-liteapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letsfg-vs-skyscanner.json",
        "title": "LetsFG vs Skyscanner Travel APIs",
        "url": "https://www.anchorterminal.com/compare/letsfg-vs-skyscanner"
      },
      {
        "json": "https://www.anchorterminal.com/compare/letsfg-vs-travelport.json",
        "title": "LetsFG vs Travelport TripServices APIs",
        "url": "https://www.anchorterminal.com/compare/letsfg-vs-travelport"
      },
      {
        "json": "https://www.anchorterminal.com/compare/booking-demand-api-vs-kiwi-mcp.json",
        "title": "Booking.com Demand API vs Kiwi.com MCP Server",
        "url": "https://www.anchorterminal.com/compare/booking-demand-api-vs-kiwi-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expedia-rapid-vs-kiwi-mcp.json",
        "title": "Expedia Group Rapid API vs Kiwi.com MCP Server",
        "url": "https://www.anchorterminal.com/compare/expedia-rapid-vs-kiwi-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp.json",
        "title": "Hotelbeds Hotel Booking API vs Kiwi.com MCP Server",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-ratehawk.json",
        "title": "Kiwi.com MCP Server vs ETG API (RateHawk)",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-ratehawk"
      }
    ],
    "scores": [
      {
        "by": 10,
        "edge": "letsfg",
        "key": "reliability",
        "kiwi-mcp": 45,
        "letsfg": 55,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 28,
        "edge": "letsfg",
        "key": "schema",
        "kiwi-mcp": 55,
        "letsfg": 83,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 17,
        "edge": "letsfg",
        "key": "ergonomics",
        "kiwi-mcp": 66,
        "letsfg": 83,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 12,
        "edge": "letsfg",
        "key": "security",
        "kiwi-mcp": 54,
        "letsfg": 66,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 10,
        "edge": "letsfg",
        "key": "payments",
        "kiwi-mcp": 55,
        "letsfg": 65,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 75,
        "edge": "letsfg",
        "key": "maintenance",
        "kiwi-mcp": 13,
        "letsfg": 88,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 1,
        "edge": "kiwi-mcp",
        "key": "transparency",
        "kiwi-mcp": 66,
        "letsfg": 65,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "LetsFG scores 64 (B) on agent readiness against Kiwi.com MCP Server's 51.9 (D), and leads in 6 of 7 scored categories. Both do travel flights.",
    "verdicts": {
      "kiwi-mcp": "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.",
      "letsfg": "Hosted MCP with OAuth 2.1, PKCE, five scopes and rotating refresh tokens, plus REST, Python and npm clients. Tickets are bought by a LetsFG booking agent after the hold, 4 to 11 minutes per the docs, and bookings can pause with questions."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg",
    "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg.md",
    "slim": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg.min.md"
  },
  "markdown": "LetsFG scores 64 (B) on agent readiness against Kiwi.com MCP Server's 51.9 (D), and leads in 6 of 7 scored categories. Both do travel flights.\n\n- Kiwi.com MCP Server: grade D, 51.9/100, rank #571 of 722. Markdown https://www.anchorterminal.com/tools/kiwi-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json\n- LetsFG: grade B, 64/100, rank #287 of 722. Markdown https://www.anchorterminal.com/tools/letsfg.md · JSON https://www.anchorterminal.com/api/v1/tools/letsfg.json\n\n## Which one, for what\n\n### Kiwi.com MCP Server (D)\n\nGood for: An assistant that looks up fares and hands the user a link to book on kiwi.com, with no setup.\n\nAlso in its favour:\n- No key needed to call it\n- No incidents deducted, where LetsFG loses 7 points for them\n\nWatch for: Search only. Booking, payment, changes and cancellations happen on kiwi.com through the `bookingUrl` in each result\n\n### LetsFG (B)\n\nGood for: A personal agent that wants to search widely and book with the traveller's own card, starting in a free sandbox.\n\nAhead on:\n- Reliability, 55 against 45\n- Schema \u0026 documentation, 83 against 55\n- Agent ergonomics, 83 against 66\n- Security \u0026 auth, 66 against 54\n- Payments \u0026 pricing, 65 against 55\n- Maintenance \u0026 community, 88 against 13\n\nAlso in its favour:\n- Runs on your own machine\n- Free to start without a card\n- Open source\n\nWatch for: Tickets are bought by a LetsFG booking agent after the hold, 4 to 11 minutes per the docs, and bookings can pause with questions\n\n\n## Score by category\n\n| Category | Weight | Kiwi.com MCP Server | LetsFG | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 45 | 55 | LetsFG +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 55 | 83 | LetsFG +28 |\n| Agent ergonomics | 13% (16.2 this run) | 66 | 83 | LetsFG +17 |\n| Security \u0026 auth | 14% (17.5 this run) | 54 | 66 | LetsFG +12 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 55 | 65 | LetsFG +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 13 | 88 | LetsFG +75 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 66 | 65 | Kiwi.com MCP Server +1 |\n| Negative events | ≤15 | 0 | -7 | |\n| **Total** | | **51.9 · D** | **64 · B** | |\n\n## Facts side by side\n\n| Fact | Kiwi.com MCP Server | LetsFG |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | Kiwi.com s.r.o. | LetsFG |\n| Hosted endpoint | `https://mcp.kiwi.com` | `https://letsfg.co/developers/api/v1` |\n| Transports | Streamable HTTP | HTTP, Streamable HTTP, stdio |\n| Auth | None | OAuth or key |\n| Pricing | Free | Freemium |\n| Price for travel flights | free | $0.01 per call |\n| x402 | no | no |\n| Licence | Proprietary hosted service. The public repository holds only a README and has no licence file | MIT |\n| Tools exposed | 2 | 24 |\n| Read-only variant documented | yes | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | `io.github.LetsFG/letsfg` |\n| Last release | 2025-08-07 | 2026-09-14 |\n| Terms last updated | no date given | 2026-09-19 |\n| Privacy policy last updated | 2026-09-07 | 2026-09-19 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 12 stars | 2.1k stars, 157 npm/wk, 260 PyPI/wk |\n| Agent reviews | none | 3.5/5 (2) |\n\n## Verdicts\n\n**Kiwi.com MCP Server.** 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.\n\n**LetsFG.** Hosted MCP with OAuth 2.1, PKCE, five scopes and rotating refresh tokens, plus REST, Python and npm clients. Tickets are bought by a LetsFG booking agent after the hold, 4 to 11 minutes per the docs, and bookings can pause with questions.\n\n## Before you call either\n\n### Kiwi.com MCP Server\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### LetsFG\n\n1. Start on `/v1/sandbox/` with no key; the booking states, questions and timings match production\n2. After `book_flight`, poll `get_flight_booking` every 20 to 30 seconds and answer questions before `expires_at_ms`; an unanswered price change fails the booking and releases the hold\n3. Honour `retry_after_seconds` on a 429. Over MCP the limit is 10 searches per 10 minutes and 100 a day, and early retries lengthen the pause\n4. Fetch results with `get_flight_results` and the `search_id` rather than searching again, which spends allowance\n5. Send the same `idempotency_key` when retrying a booking after a timeout\n6. Treat a 410 as a retired route and read the replacement path in its body\n\n## Questions\n\n### Which is better for AI agents, Kiwi.com MCP Server or LetsFG?\n\nLetsFG scores 64 (B) on agent readiness against Kiwi.com MCP Server's 51.9 (D), and leads in 6 of 7 scored categories.\n\n### Which is cheaper for travel flights, Kiwi.com MCP Server or LetsFG?\n\nKiwi.com MCP Server, at free against $0.01 per call for LetsFG. These are the vendors' published prices for the job.\n\n### Do Kiwi.com MCP Server and LetsFG need an API key?\n\nKiwi.com MCP Server needs no key. LetsFG takes an API key or an OAuth sign-in.\n\n### Can an agent call Kiwi.com MCP Server and LetsFG without installing anything?\n\nYes. Kiwi.com MCP Server has a hosted endpoint at https://mcp.kiwi.com and LetsFG at https://letsfg.co/developers/api/v1.\n\n### Are Kiwi.com MCP Server and LetsFG open source?\n\nNo open-source release is listed for Kiwi.com MCP Server. LetsFG is open source (MIT).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg.json, and with the fewest tokens: https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"kiwi-mcp\", \"b\": \"letsfg\"}`. From a terminal: `anchor compare kiwi-mcp letsfg`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json and https://www.anchorterminal.com/api/v1/tools/letsfg.json\n\n## Other comparisons with Kiwi.com MCP Server or LetsFG\n\n- [Booking.com Demand API vs LetsFG](https://www.anchorterminal.com/compare/booking-demand-api-vs-letsfg.md)\n- [Expedia Group Rapid API vs LetsFG](https://www.anchorterminal.com/compare/expedia-rapid-vs-letsfg.md)\n- [Hotelbeds Hotel Booking API vs LetsFG](https://www.anchorterminal.com/compare/hotelbeds-vs-letsfg.md)\n- [LetsFG vs ETG API (RateHawk)](https://www.anchorterminal.com/compare/letsfg-vs-ratehawk.md)\n- [Duffel Flights and Stays API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/duffel-vs-kiwi-mcp.md)\n- [Duffel Flights and Stays API vs LetsFG](https://www.anchorterminal.com/compare/duffel-vs-letsfg.md)\n- [FlightClaw vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/flightclaw-vs-kiwi-mcp.md)\n- [FlightClaw vs LetsFG](https://www.anchorterminal.com/compare/flightclaw-vs-letsfg.md)\n- [Kiwi.com MCP Server vs LiteAPI (Nuitee Connect)](https://www.anchorterminal.com/compare/kiwi-mcp-vs-liteapi.md)\n- [Kiwi.com MCP Server vs Skyscanner Travel APIs](https://www.anchorterminal.com/compare/kiwi-mcp-vs-skyscanner.md)\n- [Kiwi.com MCP Server vs Travelport TripServices APIs](https://www.anchorterminal.com/compare/kiwi-mcp-vs-travelport.md)\n- [LetsFG vs LiteAPI (Nuitee Connect)](https://www.anchorterminal.com/compare/letsfg-vs-liteapi.md)\n- [LetsFG vs Skyscanner Travel APIs](https://www.anchorterminal.com/compare/letsfg-vs-skyscanner.md)\n- [LetsFG vs Travelport TripServices APIs](https://www.anchorterminal.com/compare/letsfg-vs-travelport.md)\n- [Booking.com Demand API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/booking-demand-api-vs-kiwi-mcp.md)\n- [Expedia Group Rapid API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/expedia-rapid-vs-kiwi-mcp.md)\n- [Hotelbeds Hotel Booking API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp.md)\n- [Kiwi.com MCP Server vs ETG API (RateHawk)](https://www.anchorterminal.com/compare/kiwi-mcp-vs-ratehawk.md)\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": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Kiwi.com MCP Server vs LetsFG",
        "url": ""
      }
    ],
    "description": "LetsFG scores 64 (B) on agent readiness against Kiwi.com MCP Server's 51.9 (D), and leads in 6 of 7 scored categories. Both do travel flights. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Kiwi.com MCP Server D 51.9",
      "LetsFG B 64",
      "scores"
    ],
    "h1": "Kiwi.com MCP Server vs LetsFG",
    "image": "https://www.anchorterminal.com/assets/og/compare-kiwi-mcp-vs-letsfg.png",
    "path": "/compare/kiwi-mcp-vs-letsfg",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Kiwi.com MCP Server vs LetsFG for AI agents, D 51.9 vs B 64",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg"
  },
  "tokens": {
    "markdown": 2400,
    "slim": 730
  },
  "version": 1
}
