{
  "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": 860,
        "ranked": true,
        "rankOf": 1197,
        "categoryRank": 5,
        "methodology": "0.6",
        "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.6",
            "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,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-08",
            "maintenance": "2026-10-08",
            "payments": "2026-10-08",
            "reliability": "2026-10-08",
            "schema": "2026-10-08",
            "security": "2026-10-08",
            "transparency": "2026-10-08"
          },
          "last": "2026-10-08",
          "oldest": "2026-10-08",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "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-21T22:54:30.245491741Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 122,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 98.8,
          "uptime30d": 99.49,
          "p50ms24h": 127,
          "p95ms24h": 221,
          "samples24h": 250,
          "samples30d": 3301,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 50
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 242
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 252
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 251
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 254
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 254
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 250
            },
            {
              "date": "2026-10-21",
              "probes": 242,
              "ok": 239
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.kiwi.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-21T22:49:25.786565454Z"
        },
        "githubStars": 12,
        "securityTxt": {
          "url": "https://kiwi.com/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-10-21T15:59:14.166099014Z"
        },
        "domain": {
          "domain": "kiwi.com",
          "registered": "1994-11-23",
          "source": "https://rdap.verisign.com/com/v1/domain/kiwi.com",
          "checkedAt": "2026-10-18T13:33:51.331719193Z"
        },
        "pages": [
          {
            "url": "https://www.kiwi.com/en/pages/content/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-21T01:03:39.896207284Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9d2b823f536f"
          },
          {
            "url": "https://www.kiwi.com/en/pages/content/legal/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-21T01:03:37.550239221Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "27b49a910915"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.kiwi.com",
          "checkedAt": "2026-10-20T23:50:01.319552387Z",
          "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."
              }
            ]
          }
        },
        "github": {
          "repo": "alpic-ai/kiwi-mcp-server-public",
          "checkedAt": "2026-10-19T05:52:16.06027722Z",
          "stars": 12,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2025-08-07T14:06:36Z",
          "openIssues": 2,
          "openPRs": 0,
          "issuesOpened90d": 1,
          "issuesClosed90d": 0,
          "prsMerged90d": 0,
          "replies": {
            "sampled": 2,
            "unanswered": 2
          }
        },
        "updatedAt": "2026-10-21T22:54:30.245491741Z"
      }
    },
    "answer": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Odessia's 22.2 (F), and leads in 6 of 7 scored categories. Odessia leads on reliability.",
    "b": {
      "slug": "odessia",
      "name": "Odessia",
      "vendor": "Artificial Intelligence Systems Inc. (dba Odessia)",
      "vendorUrl": "https://odessia.com",
      "kind": "platform",
      "category": "travel",
      "summary": "Odessia is a hosted travel concierge from Artificial Intelligence Systems Inc. that plans trips, books hotels and flights as a registered travel agent, and watches prices and award seats. It works on the web, by message and by email.",
      "url": "https://www.anchorterminal.com/tools/odessia",
      "markdownUrl": "https://www.anchorterminal.com/tools/odessia.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/odessia.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/odessia.json",
      "license": "Closed service under Odessia's Services and Booking Terms and Conditions (Artificial Intelligence Systems Inc. dba Odessia). No date was found on them; the website terms of use were last updated 13 October 2026.",
      "transports": [],
      "packages": [],
      "auth": "mixed",
      "authNotes": "A person signs in on odessia.com and can connect Gmail and Google Calendar with read-only access (https://odessia.com/). Bookings run under authorisations the person gives, including standing authorisations with limits (https://odessia.com/terms). No API, MCP server or other interface for an outside agent was found.",
      "pricing": "free",
      "pricingNotes": "The home page says Odessia is free to use. Bookings are charged at the supplier's price, and Odessia Credits of up to US$50 apply to eligible prepaid hotel stays of US$300 or more (https://odessia.com/ and https://odessia.com/legal/credits-simple-terms). Checked 21 October 2026.",
      "priceSummary": "Free",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 found on odessia.com, its terms, privacy policy or credits terms, checked 21 October 2026.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-21"
      },
      "capabilities": [
        "travel.flights",
        "travel.stays",
        "travel.booking",
        "travel.search",
        "travel.changes"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "free",
        "status-page",
        "access-unverified",
        "not-for-agents"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 22.2,
        "grade": "F",
        "agentReady": false,
        "rank": 1139,
        "ranked": true,
        "rankOf": 1197,
        "categoryRank": 12,
        "methodology": "0.6",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 0,
          "maintenance": 2,
          "payments": 30,
          "reliability": 60,
          "schema": 0,
          "security": 6,
          "transparency": 60
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-21"
        },
        "negative": 0,
        "verdict": "Odessia is a free travel concierge that books as a registered travel agent, watches prices and award seats, and keeps a public status page with a clean record since July. No outside agent can call it, standing authorisations let it pay without asking each time, and no changelog was found.",
        "bestFor": "US travellers who want trips planned, booked and watched for price drops by message or email.",
        "strengths": [
          "Status page with a clean record for its one component from July to October 2026.",
          "Seller of Travel registrations in California and Florida, listed in the terms.",
          "Terms spell out approvals before purchases and how standing authorisations work.",
          "Free to use, with bookings at supplier prices."
        ],
        "weaknesses": [
          "No API, MCP server or A2A endpoint for an outside agent.",
          "The privacy policy says conversations may train AI models in future.",
          "No changelog, release notes or security.txt found.",
          "AI providers aren't named, and iOS isn't out yet."
        ],
        "agentNotes": [
          "Don't plan to call Odessia from another agent. It answers only its signed-in owner on the web, by message or by email.",
          "Check whether the owner has set a standing authorisation before assuming a booking will wait for approval."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 1.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "F",
            "methodology": "0.6",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 22.2
          }
        ],
        "editorialScores": {
          "ergonomics": 0,
          "maintenance": 2,
          "payments": 30,
          "reliability": 60,
          "schema": 0,
          "security": 6,
          "transparency": 43
        },
        "provenanceScore": 76,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-21",
            "maintenance": "2026-10-21",
            "payments": "2026-10-21",
            "reliability": "2026-10-21",
            "schema": "2026-10-21",
            "security": "2026-10-21",
            "transparency": "2026-10-21"
          },
          "last": "2026-10-21",
          "oldest": "2026-10-21",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "letme": {
        "capability": "https://letme.dev/travel.flights",
        "tool": "https://letme.dev/odessia"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Artificial Intelligence Systems Inc.",
        "domain": "odessia.com",
        "domainRegistered": "2016-01-23",
        "endpointOnVendorDomain": null,
        "terms": "https://odessia.com/terms",
        "privacy": "https://odessia.com/privacy",
        "statusPage": "https://status.odessia.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-21",
        "notes": [
          "The booking terms carry no date. The privacy policy and website terms were last updated 13 October 2026.",
          "status.odessia.com is an incident.io page with one component (odessia.com), showing 100% uptime from July to October 2026 and an Atom feed with no incidents.",
          "odessia.com/.well-known/security.txt returns 404.",
          "RDAP gives a registration date of 2016-01-23 for odessia.com, older than the company's product."
        ],
        "score": 76
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/odessia.json",
      "live": {
        "slug": "odessia",
        "vendorStatus": {
          "page": "https://status.odessia.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-21T22:49:32.073987514Z"
        },
        "updatedAt": "2026-10-21T22:49:32.073987514Z"
      }
    },
    "facts": [
      {
        "a": "MCP server",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "Kiwi.com s.r.o.",
        "b": "Artificial Intelligence Systems Inc. (dba Odessia)",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.kiwi.com",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted service. The public repository holds only a README and has no licence file",
        "b": "Closed service under Odessia's Services and Booking Terms and Conditions (Artificial Intelligence Systems Inc. dba Odessia). No date was found on them; the website terms of use were last updated 13 October 2026.",
        "name": "Licence"
      },
      {
        "a": "2",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2025-08-07",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-07",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "12 stars",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "1.8/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Odessia's 22.2 (F), and leads in 6 of 7 scored categories. Odessia leads on reliability.",
        "question": "Which is better for AI agents, Kiwi.com MCP Server or Odessia?"
      },
      {
        "answer": "Kiwi.com MCP Server has a hosted endpoint at https://mcp.kiwi.com. No hosted endpoint is listed for Odessia.",
        "question": "Can an agent call Kiwi.com MCP Server and Odessia without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 55 against 0",
          "Agent ergonomics, 66 against 0",
          "Security \u0026 auth, 54 against 6",
          "Payments \u0026 pricing, 55 against 30",
          "Maintenance \u0026 community, 13 against 2",
          "Transparency \u0026 trust, 66 against 60"
        ],
        "also": [
          "No key needed to call it",
          "A hosted endpoint, with nothing to install"
        ],
        "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, 60 against 45"
        ],
        "also": null,
        "goodFor": "US travellers who want trips planned, booked and watched for price drops by message or email.",
        "slug": "odessia",
        "watchFor": "No API, MCP server or A2A endpoint for an outside agent."
      }
    ],
    "job": {
      "capability": "travel.flights",
      "name": "Flight search"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/booking-demand-api-vs-odessia.json",
        "title": "Booking.com Demand API vs Odessia",
        "url": "https://www.anchorterminal.com/compare/booking-demand-api-vs-odessia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expedia-rapid-vs-odessia.json",
        "title": "Expedia Group Rapid API vs Odessia",
        "url": "https://www.anchorterminal.com/compare/expedia-rapid-vs-odessia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-odessia.json",
        "title": "Hotelbeds Hotel Booking API vs Odessia",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-odessia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/liteapi-vs-odessia.json",
        "title": "LiteAPI (Nuitee Connect) vs Odessia",
        "url": "https://www.anchorterminal.com/compare/liteapi-vs-odessia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odessia-vs-ratehawk.json",
        "title": "Odessia vs ETG API (RateHawk)",
        "url": "https://www.anchorterminal.com/compare/odessia-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-odessia.json",
        "title": "Duffel Flights and Stays API vs Odessia",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-odessia"
      },
      {
        "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-odessia.json",
        "title": "FlightClaw vs Odessia",
        "url": "https://www.anchorterminal.com/compare/flightclaw-vs-odessia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-letsfg.json",
        "title": "Kiwi.com MCP Server vs LetsFG",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-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-soar-travel.json",
        "title": "Kiwi.com MCP Server vs Soar",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-soar-travel"
      },
      {
        "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-odessia.json",
        "title": "LetsFG vs Odessia",
        "url": "https://www.anchorterminal.com/compare/letsfg-vs-odessia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odessia-vs-skyscanner.json",
        "title": "Odessia vs Skyscanner Travel APIs",
        "url": "https://www.anchorterminal.com/compare/odessia-vs-skyscanner"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odessia-vs-soar-travel.json",
        "title": "Odessia vs Soar",
        "url": "https://www.anchorterminal.com/compare/odessia-vs-soar-travel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odessia-vs-travelport.json",
        "title": "Odessia vs Travelport TripServices APIs",
        "url": "https://www.anchorterminal.com/compare/odessia-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-lola.json",
        "title": "Kiwi.com MCP Server vs Lola",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-lola"
      },
      {
        "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"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-trainline.json",
        "title": "Kiwi.com MCP Server vs Trainline",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-trainline"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lola-vs-odessia.json",
        "title": "Lola vs Odessia",
        "url": "https://www.anchorterminal.com/compare/lola-vs-odessia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odessia-vs-trainline.json",
        "title": "Odessia vs Trainline",
        "url": "https://www.anchorterminal.com/compare/odessia-vs-trainline"
      }
    ],
    "scores": [
      {
        "by": 15,
        "edge": "odessia",
        "key": "reliability",
        "kiwi-mcp": 45,
        "name": "Reliability",
        "odessia": 60,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 55,
        "edge": "kiwi-mcp",
        "key": "schema",
        "kiwi-mcp": 55,
        "name": "Schema \u0026 documentation",
        "odessia": 0,
        "weight": 13
      },
      {
        "by": 66,
        "edge": "kiwi-mcp",
        "key": "ergonomics",
        "kiwi-mcp": 66,
        "name": "Agent ergonomics",
        "odessia": 0,
        "weight": 13
      },
      {
        "by": 48,
        "edge": "kiwi-mcp",
        "key": "security",
        "kiwi-mcp": 54,
        "name": "Security \u0026 auth",
        "odessia": 6,
        "weight": 14
      },
      {
        "by": 25,
        "edge": "kiwi-mcp",
        "key": "payments",
        "kiwi-mcp": 55,
        "name": "Payments \u0026 pricing",
        "odessia": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "edge": "kiwi-mcp",
        "key": "maintenance",
        "kiwi-mcp": 13,
        "name": "Maintenance \u0026 community",
        "odessia": 2,
        "weight": 7
      },
      {
        "by": 6,
        "edge": "kiwi-mcp",
        "key": "transparency",
        "kiwi-mcp": 66,
        "name": "Transparency \u0026 trust",
        "odessia": 60,
        "weight": 7
      }
    ],
    "summary": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Odessia's 22.2 (F), and leads in 6 of 7 scored categories. Odessia leads on reliability. Both do flight search.",
    "tutorials": [
      {
        "title": "Compare flights with Kiwi.com MCP",
        "tool": "kiwi-mcp",
        "url": "https://www.anchorterminal.com/tutorials/kiwi-mcp/"
      }
    ],
    "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.",
      "odessia": "Odessia is a free travel concierge that books as a registered travel agent, watches prices and award seats, and keeps a public status page with a clean record since July. No outside agent can call it, standing authorisations let it pay without asking each time, and no changelog was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-odessia",
    "json": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-odessia.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-odessia.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-odessia.min.md"
  },
  "markdown": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Odessia's 22.2 (F), and leads in 6 of 7 scored categories. Odessia leads on reliability. Both do flight search.\n\n- Kiwi.com MCP Server: grade D, 51.9/100, rank #860 of 1197. Markdown https://www.anchorterminal.com/tools/kiwi-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json\n- Odessia: grade F, 22.2/100, rank #1139 of 1197. Markdown https://www.anchorterminal.com/tools/odessia.md · JSON https://www.anchorterminal.com/api/v1/tools/odessia.json\n- Best travel search and booking APIs for AI agents: https://www.anchorterminal.com/best/travel/index.md\n- All 105 travel comparisons: https://www.anchorterminal.com/compare/travel/index.md\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\nAhead on:\n- Schema \u0026 documentation, 55 against 0\n- Agent ergonomics, 66 against 0\n- Security \u0026 auth, 54 against 6\n- Payments \u0026 pricing, 55 against 30\n- Maintenance \u0026 community, 13 against 2\n- Transparency \u0026 trust, 66 against 60\n\nAlso in its favour:\n- No key needed to call it\n- A hosted endpoint, with nothing to install\n\nWatch for: Search only. Booking, payment, changes and cancellations happen on kiwi.com through the `bookingUrl` in each result\n\n### Odessia (F)\n\nGood for: US travellers who want trips planned, booked and watched for price drops by message or email.\n\nAhead on:\n- Reliability, 60 against 45\n\nWatch for: No API, MCP server or A2A endpoint for an outside agent.\n\n\n## Score by category\n\n| Category | Weight | Kiwi.com MCP Server | Odessia | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 45 | 60 | Odessia +15 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 55 | 0 | Kiwi.com MCP Server +55 |\n| Agent ergonomics | 13% (16.2 this run) | 66 | 0 | Kiwi.com MCP Server +66 |\n| Security \u0026 auth | 14% (17.5 this run) | 54 | 6 | Kiwi.com MCP Server +48 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 55 | 30 | Kiwi.com MCP Server +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 13 | 2 | Kiwi.com MCP Server +11 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 66 | 60 | Kiwi.com MCP Server +6 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **51.9 · D** | **22.2 · F** | |\n\n## Facts side by side\n\n| Fact | Kiwi.com MCP Server | Odessia |\n| --- | --- | --- |\n| Kind | MCP server | Platform |\n| Vendor | Kiwi.com s.r.o. | Artificial Intelligence Systems Inc. (dba Odessia) |\n| Hosted endpoint | `https://mcp.kiwi.com` | no (local only) |\n| Transports | Streamable HTTP |  |\n| Auth | None | OAuth or key |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Proprietary hosted service. The public repository holds only a README and has no licence file | Closed service under Odessia's Services and Booking Terms and Conditions (Artificial Intelligence Systems Inc. dba Odessia). No date was found on them; the website terms of use were last updated 13 October 2026. |\n| Tools exposed | 2 | none |\n| Read-only variant documented | yes | no |\n| llms.txt | no | no |\n| Last release | 2025-08-07 | none |\n| Terms last updated | no date given |  |\n| Privacy policy last updated | 2026-09-07 |  |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | not found in the text |  |\n| Terms or service can change without notice | not found in the text |  |\n| Arbitration or class-action waiver | yes |  |\n| Popularity | 12 stars | none |\n| Agent reviews | none | 1.8/5 (4) |\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**Odessia.** Odessia is a free travel concierge that books as a registered travel agent, watches prices and award seats, and keeps a public status page with a clean record since July. No outside agent can call it, standing authorisations let it pay without asking each time, and no changelog was found.\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### Odessia\n\n1. Don't plan to call Odessia from another agent. It answers only its signed-in owner on the web, by message or by email.\n2. Check whether the owner has set a standing authorisation before assuming a booking will wait for approval.\n\n## Tutorials\n\n- [Compare flights with Kiwi.com MCP](https://www.anchorterminal.com/tutorials/kiwi-mcp/), for Kiwi.com MCP Server\n\n## Questions\n\n### Which is better for AI agents, Kiwi.com MCP Server or Odessia?\n\nKiwi.com MCP Server scores 51.9 (D) on agent readiness against Odessia's 22.2 (F), and leads in 6 of 7 scored categories. Odessia leads on reliability.\n\n### Can an agent call Kiwi.com MCP Server and Odessia without installing anything?\n\nKiwi.com MCP Server has a hosted endpoint at https://mcp.kiwi.com. No hosted endpoint is listed for Odessia.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/kiwi-mcp-vs-odessia.json, and with the fewest tokens: https://www.anchorterminal.com/compare/kiwi-mcp-vs-odessia.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"kiwi-mcp\", \"b\": \"odessia\"}`. From a terminal: `anchor compare kiwi-mcp odessia`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json and https://www.anchorterminal.com/api/v1/tools/odessia.json\n\n## Other comparisons with Kiwi.com MCP Server or Odessia\n\n- [Booking.com Demand API vs Odessia](https://www.anchorterminal.com/compare/booking-demand-api-vs-odessia.md)\n- [Expedia Group Rapid API vs Odessia](https://www.anchorterminal.com/compare/expedia-rapid-vs-odessia.md)\n- [Hotelbeds Hotel Booking API vs Odessia](https://www.anchorterminal.com/compare/hotelbeds-vs-odessia.md)\n- [LiteAPI (Nuitee Connect) vs Odessia](https://www.anchorterminal.com/compare/liteapi-vs-odessia.md)\n- [Odessia vs ETG API (RateHawk)](https://www.anchorterminal.com/compare/odessia-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 Odessia](https://www.anchorterminal.com/compare/duffel-vs-odessia.md)\n- [FlightClaw vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/flightclaw-vs-kiwi-mcp.md)\n- [FlightClaw vs Odessia](https://www.anchorterminal.com/compare/flightclaw-vs-odessia.md)\n- [Kiwi.com MCP Server vs LetsFG](https://www.anchorterminal.com/compare/kiwi-mcp-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 Soar](https://www.anchorterminal.com/compare/kiwi-mcp-vs-soar-travel.md)\n- [Kiwi.com MCP Server vs Travelport TripServices APIs](https://www.anchorterminal.com/compare/kiwi-mcp-vs-travelport.md)\n- [LetsFG vs Odessia](https://www.anchorterminal.com/compare/letsfg-vs-odessia.md)\n- [Odessia vs Skyscanner Travel APIs](https://www.anchorterminal.com/compare/odessia-vs-skyscanner.md)\n- [Odessia vs Soar](https://www.anchorterminal.com/compare/odessia-vs-soar-travel.md)\n- [Odessia vs Travelport TripServices APIs](https://www.anchorterminal.com/compare/odessia-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 Lola](https://www.anchorterminal.com/compare/kiwi-mcp-vs-lola.md)\n- [Kiwi.com MCP Server vs ETG API (RateHawk)](https://www.anchorterminal.com/compare/kiwi-mcp-vs-ratehawk.md)\n- [Kiwi.com MCP Server vs Trainline](https://www.anchorterminal.com/compare/kiwi-mcp-vs-trainline.md)\n- [Lola vs Odessia](https://www.anchorterminal.com/compare/lola-vs-odessia.md)\n- [Odessia vs Trainline](https://www.anchorterminal.com/compare/odessia-vs-trainline.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-21",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.6",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Kiwi.com MCP Server vs Odessia",
        "url": ""
      }
    ],
    "description": "Kiwi.com scores 51.9 (D) to Odessia's 22.2 (F) for flight search. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Kiwi.com MCP Server D 51.9",
      "Odessia F 22.2",
      "scores"
    ],
    "h1": "Kiwi.com MCP Server vs Odessia",
    "image": "https://www.anchorterminal.com/assets/og/compare-kiwi-mcp-vs-odessia.png",
    "path": "/compare/kiwi-mcp-vs-odessia",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Kiwi.com vs Odessia for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-21",
    "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-odessia"
  },
  "tokens": {
    "markdown": 2450,
    "slim": 730
  },
  "version": 1
}
