{
  "data": {
    "a": {
      "slug": "hotelbeds",
      "name": "Hotelbeds Hotel Booking API",
      "vendor": "Hotelbeds (HBX Group)",
      "vendorUrl": "https://developer.hotelbeds.com",
      "kind": "http-api",
      "category": "travel",
      "summary": "B2B hotel distribution API for availability, rates, bookings, cancellations and property content.",
      "url": "https://www.anchorterminal.com/tools/hotelbeds",
      "markdownUrl": "https://www.anchorterminal.com/tools/hotelbeds.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/hotelbeds.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/hotelbeds.json",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.test.hotelbeds.com",
      "packages": [],
      "auth": "api-key",
      "authNotes": "Two headers on every call. `Api-key` is your key and `X-Signature` is a SHA-256 hex digest of the key, the shared secret and the current Unix time in seconds, concatenated in that order, so a clock that drifts breaks auth. Keys come from the developer dashboard on registration. The production host is issued once you're certified.",
      "pricing": "byo-plan",
      "pricingNotes": "No published price list. Registration gives an evaluation key with 50 requests a day on the test host. Better quotas come from progressing through profile completion and certification in the dashboard, and live bookings need a commercial agreement with Hotelbeds whose rates aren't published. The API terms warn that abusive or excessively frequent requests get an account suspended (https://developer.hotelbeds.com/documentation/getting-started/).",
      "priceSummary": "Your plan",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://developer.hotelbeds.com/documentation/",
      "capabilities": [
        "travel.stays",
        "travel.booking",
        "travel.changes",
        "travel.search"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "free-tier",
        "no-card",
        "enterprise",
        "eu"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 36.3,
        "grade": "F",
        "agentReady": false,
        "rank": 705,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 11,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 41,
          "maintenance": 3,
          "payments": 20,
          "reliability": 33,
          "schema": 57,
          "security": 38,
          "transparency": 50
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Free evaluation key on registration, no card and no sales call. 50 requests a day on evaluation, and the 51st returns a 403.",
        "bestFor": "A travel company with a Hotelbeds contract that wants wholesale rates behind its agent, and for prototyping hotel search without a sales call.",
        "strengths": [
          "Free evaluation key on registration, no card and no sales call",
          "Availability, CheckRate, booking, modification and cancellation in one API, with Content and Cache APIs alongside",
          "Cancellation can be simulated before it's run",
          "Swagger specifications and Postman collections referenced from the getting-started page",
          "Test host on the same servers as production, with no real reservations or card charges"
        ],
        "weaknesses": [
          "50 requests a day on evaluation, and the 51st returns a 403",
          "Live bookings need certification and a commercial contract, with no published prices",
          "No changelog, release notes or deprecation notices found",
          "Status page is a Pingdom uptime report with no incident history",
          "No SDKs, llms.txt, documented error codes or MCP server"
        ],
        "agentNotes": [
          "Compute `X-Signature` fresh per request from key, secret and the current epoch seconds, in that order",
          "Budget the 50 daily evaluation calls; cache hotel content and only call availability for real dates",
          "Run CheckRate on a rate before booking when the availability response says it needs rechecking",
          "Read a 403 on the test host as the daily quota first, not a bad key",
          "Simulate a cancellation before running it"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "F",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 36.3
          }
        ],
        "editorialScores": {
          "ergonomics": 41,
          "maintenance": 3,
          "payments": 20,
          "reliability": 33,
          "schema": 57,
          "security": 38,
          "transparency": 28
        },
        "provenanceScore": 71
      },
      "connect": {
        "http": "curl \"https://api.test.hotelbeds.com/hotel-api/1.0/status\" \\\n  -H \"Api-key: $HOTELBEDS_API_KEY\" -H \"Accept: application/json\" \\\n  -H \"X-Signature: $(printf '%s%s%s' \"$HOTELBEDS_API_KEY\" \"$HOTELBEDS_SECRET\" \"$(date +%s)\" | sha256sum | cut -d' ' -f1)\""
      },
      "letme": {
        "capability": "https://letme.dev/travel.stays",
        "tool": "https://letme.dev/hotelbeds"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "HBX International Group PLC (Hotelbeds)",
        "domain": "hotelbeds.com",
        "domainRegistered": "2001-06-19",
        "endpointOnVendorDomain": true,
        "terms": "https://developer.hotelbeds.com/api-terms-use",
        "privacy": "https://www.hbxgroup.com/privacy-policy",
        "statusPage": "http://stats.pingdom.com/lxdqh5mwxj3w",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "The API terms name Hotelbeds or Travel B2B Ltd as the provider, under Spanish law and the courts of Palma de Mallorca. The group privacy policy names HBX International Group PLC, 7th Floor Tower 42, 25 Old Broad Street, London EC2N 1HN, as controller.",
          "The status page is a public Pingdom report rather than a vendor status site.",
          "developer.hotelbeds.com/.well-known/security.txt returns 404."
        ],
        "score": 71
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/hotelbeds.json",
      "live": {
        "slug": "hotelbeds",
        "probe": {
          "target": "https://api.test.hotelbeds.com",
          "method": "get",
          "lastAt": "2026-10-08T21:53:23.916020018Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 44,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 50,
          "p95ms24h": 101,
          "samples24h": 270,
          "samples30d": 1962,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 246,
              "ok": 246
            }
          ]
        },
        "vendorStatus": {
          "page": "http://stats.pingdom.com/lxdqh5mwxj3w",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T19:38:41.061131805Z"
        },
        "securityTxt": {
          "url": "https://hotelbeds.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:38.683520895Z"
        },
        "domain": {
          "domain": "hotelbeds.com",
          "registered": "2001-06-19",
          "source": "https://rdap.verisign.com/com/v1/domain/hotelbeds.com",
          "checkedAt": "2026-10-04T13:04:34.216873885Z"
        },
        "pages": [
          {
            "url": "https://www.hbxgroup.com/privacy-policy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-08T18:28:09.088154808Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d52ebddb3584"
          },
          {
            "url": "https://developer.hotelbeds.com/api-terms-use",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:14.025007885Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "da01a8431a6e"
          }
        ],
        "updatedAt": "2026-10-08T21:53:23.916020018Z"
      }
    },
    "answer": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Hotelbeds Hotel Booking API's 36.3 (F), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "kiwi-mcp",
      "name": "Kiwi.com MCP Server",
      "vendor": "Kiwi.com s.r.o.",
      "vendorUrl": "https://www.kiwi.com",
      "kind": "mcp",
      "category": "travel",
      "summary": "Kiwi.com's remote MCP server searches the travel agency's flight inventory for one-way and return trips. It needs no account or key, and each result carries a link to book on kiwi.com.",
      "url": "https://www.anchorterminal.com/tools/kiwi-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/kiwi-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/kiwi-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json",
      "repo": "https://github.com/alpic-ai/kiwi-mcp-server-public",
      "license": "Proprietary hosted service. The public repository holds only a README and has no licence file",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.kiwi.com",
      "packages": [],
      "auth": "none",
      "authNotes": "No credentials. `https://mcp.kiwi.com` answered `initialize`, `tools/list` and `tools/call` with no key, token or session header on 8 October 2026, and `/.well-known/oauth-protected-resource` returns 404. Access is self-serve by adding the URL to an MCP client.",
      "pricing": "free",
      "pricingNotes": "Free to call, with no account, card or sandbox step, as observed on 8 October 2026. No page states a price or a usage limit for the server. Travellers pay the fare on kiwi.com after following a result's booking link, under Kiwi.com's terms and conditions (https://www.kiwi.com/en/pages/content/legal/).",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README or in the server's responses, which need no payment (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 2,
      "popularity": {
        "githubStars": 12,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://github.com/alpic-ai/kiwi-mcp-server-public",
      "capabilities": [
        "travel.flights",
        "travel.search"
      ],
      "tags": [
        "hosted",
        "mcp",
        "no-auth",
        "free",
        "flights",
        "search-only",
        "status-page",
        "bug-bounty"
      ],
      "lastRelease": "2025-08-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 51.9,
        "grade": "D",
        "agentReady": false,
        "rank": 571,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 13,
          "payments": 55,
          "reliability": 45,
          "schema": 55,
          "security": 54,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "A keyless flight search with one typed, read-only tool, 47 filters and a booking link on every itinerary. It can't book, hold, change or cancel, and it has no published rate limits, changelog, terms or version. Each search returns 15 itineraries with no way to ask for fewer.",
        "bestFor": "An assistant that looks up fares and hands the user a link to book on kiwi.com, with no setup.",
        "strengths": [
          "No account, key or OAuth. An `initialize` and a `tools/call` to `https://mcp.kiwi.com` answered without credentials on 8 October 2026",
          "`search-flight` carries a typed input schema with 47 properties, three of them required, and an output schema",
          "Both tools carry annotations. `search-flight` is marked read-only and idempotent",
          "City and airport names are resolved by the server, so no separate location lookup is needed",
          "Kiwi.com publishes a security.txt, a disclosure policy and a HackerOne bug bounty"
        ],
        "weaknesses": [
          "Search only. Booking, payment, changes and cancellations happen on kiwi.com through the `bookingUrl` in each result",
          "No rate limits, 429 guidance, SLA, changelog or deprecation policy found, and `serverInfo.version` is empty",
          "No result limit or pagination. Two searches returned 15 itineraries each, 25 KB and 34 KB of text, repeated in `structuredContent`",
          "Validation failures come back as a raw Pydantic message in an `error` field with `isError` false",
          "No terms name the MCP server, and the privacy policy's stated scope is the website and mobile apps",
          "The public repository is a README last changed on 7 August 2025, with no licence, and it omits the second tool and most filters"
        ],
        "agentNotes": [
          "POST to `https://mcp.kiwi.com` itself. `/mcp` returns 404, and responses arrive as `text/event-stream` even for a single reply",
          "Send dates as dd/mm/yyyy and set `currency`, which defaults to EUR",
          "Check the `error` field of every result. A rejected input returns `resultsCount` 0 with `isError` false",
          "Narrow with `price_to`, `max_sector_stopovers` and `sort`. There is no limit parameter and each search returns 15 itineraries",
          "Give the user `bookingUrl` to book. Don't call `feedback-to-devs` with user data, because it sends free text to Kiwi.com"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 51.9
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 13,
          "payments": 55,
          "reliability": 45,
          "schema": 55,
          "security": 54,
          "transparency": 44
        },
        "provenanceScore": 87
      },
      "connect": {
        "claudeCode": "claude mcp add --transport http kiwi-com-flight-search https://mcp.kiwi.com",
        "config": {
          "mcpServers": {
            "kiwi-com-flight-search": {
              "url": "https://mcp.kiwi.com"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/travel.flights",
        "tool": "https://letme.dev/kiwi-mcp"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Kiwi.com s.r.o.",
        "domain": "kiwi.com",
        "domainRegistered": "1994-11-23",
        "endpointOnVendorDomain": true,
        "terms": "https://www.kiwi.com/en/pages/content/legal/",
        "privacy": "https://www.kiwi.com/en/pages/content/privacy/",
        "statusPage": "https://status.kiwi.com",
        "changelog": "",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms and conditions and the privacy policy name Kiwi.com s.r.o., Rohanské nábřeží 678/25, 186 00 Prague 8-Karlín, Czech Republic, company ID 29352886. US consumers contract with Kiwi.com, Inc. of Fort Lauderdale, Florida.",
          "No terms name the MCP server. `terms` points at the booking terms and conditions (applying from 11 August 2026), which govern what a user buys through a booking link. The website's terms of use (effective 30 June 2026) are a separate page and forbid commercial use of the website.",
          "The privacy policy (effective 7 September 2026) states its scope as the website and the mobile apps and doesn't mention the MCP server.",
          "www.kiwi.com/.well-known/security.txt gives a contact, a policy page and a HackerOne programme and has no Expires field. mcp.kiwi.com/.well-known/security.txt returns 404.",
          "The README repository is under the alpic-ai GitHub organisation, not a Kiwi.com one, and names Kiwi.com as author.",
          "RDAP for kiwi.com gives a registration date of 1994-11-23."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/kiwi-mcp.json",
      "live": {
        "slug": "kiwi-mcp",
        "probe": {
          "target": "https://mcp.kiwi.com",
          "method": "mcp-initialize",
          "lastAt": "2026-10-08T21:53:24.623857553Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 140,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 144,
          "p95ms24h": 202,
          "samples24h": 28,
          "samples30d": 28,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 28,
              "ok": 28
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.kiwi.com",
          "indicator": "minor",
          "summary": "Minor Service Outage",
          "checkedAt": "2026-10-08T21:58:00.546184217Z"
        },
        "mcpTools": {
          "url": "https://mcp.kiwi.com",
          "checkedAt": "2026-10-08T21:33:51.894639Z",
          "status": "ok",
          "protocol": "2026-07-28",
          "tools": [
            {
              "name": "search-flight",
              "title": "Search for flights with Kiwi.com",
              "description": "# Search for flights\n\nSearches Kiwi.com for available flights between two locations for the given dates and passengers. City or airport names are resolved automatically, so call this whenever the user wants to search for flights — whether they gave IATA codes or just place names.\n\n## Result shape\n\nReturns `{ query, currency, passengers, resultsCount, itineraries, searchTimeMs }`. Each item in `itineraries` has:\n- `price` (number) and `priceFormatted` (e.g. \"123 EUR\")\n- `totalDurationSeconds`\n- `bookingUrl` — the link to book the flight\n- `imageId` — destination city id for a hero photo (https://images.kiwi.com/photos/600x600/{imageId}.jpg)\n- `baggage` — total included baggage across all travelers: `{ personalItem, cabinBag, checkedBag }` (counts)\n- `outbound` (and `inbound` for return flights), each a leg with: `route` (list of airport codes including layovers, e.g. [\"PRG\",\"MAD\",\"BCN\"]), `departureTime` / `arrivalTime` (local ISO timestamps), `durationSeconds`, `stops`, `cabinClass`, and a `segments` list. Each segment has `from`/`to` (IATA), `fromCity`/`toCity`, `fromName`/`toName` (full airport names), `fromCountry`/`toCountry`, `carrier` (code) and `carrierName` (airline name), `flightNumber`, and `cabinClass`.\n\n## How to display\n\nRender a markdown table. Group results into cheapest (lowest `price`), shortest (lowest `totalDurationSeconds`), and other notable options. For each itinerary show, in order:\n  - Route: join `outbound.route` with \" → \" (e.g. \"PRG → MAD → BCN\"); for return flights show `inbound.route` on a second line.\n  - Times \u0026 duration: `outbound.departureTime` → `outbound.arrivalTime` (local), formatted readably (e.g. \"12 Jun 06:05 → 09:30 (3h 25m)\") using `outbound.durationSeconds`; add the `inbound` equivalents for return flights.\n  - Cabin: `outbound.cabinClass` (e.g. \"Economy\").\n  - Price: `priceFormatted`.\n  - Booking link: `bookingUrl`.\n\nFinally, summarise the best price and the shortest option, give a recommendation, and end wishing the user a nice trip with a short fun fact about the destination!",
              "inputSchema": {
                "properties": {
                  "adults": {
                    "default": 1,
                    "description": "Number of adults (12+)",
                    "ge": 1,
                    "le": 9,
                    "title": "Adults",
                    "type": "integer"
                  },
                  "adults_hand_bags": {
                    "anyOf": [
                      {
                        "items": {
                          "maximum": 1,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 9,
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Cabin (hand) bags per adult, one entry per adult (each 0-1), e.g. [1, 1]",
                    "title": "Adults Hand Bags"
                  },
                  "adults_hold_bags": {
                    "anyOf": [
                      {
                        "items": {
                          "maximum": 2,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 9,
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Checked (hold) bags per adult, one entry per adult (each 0-2), e.g. [1, 0]",
                    "title": "Adults Hold Bags"
                  },
                  "allow_diff_airport_connection": {
                    "default": true,
                    "description": "Allow connections that change airports within the same city",
                    "title": "Allow Diff Airport Connection",
                    "type": "boolean"
                  },
                  "allow_overnight_stopovers": {
                    "default": true,
                    "description": "Allow overnight (red-eye) layovers",
                    "title": "Allow Overnight Stopovers",
                    "type": "boolean"
                  },
                  "allow_self_transfer": {
                    "default": true,
                    "description": "Allow self-transfer (virtual interlining) connections between separate tickets",
                    "title": "Allow Self Transfer",
                    "type": "boolean"
                  },
                  "atime_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Earliest outbound arrival hour (0-23, local)",
                    "title": "Atime From"
                  },
                  "atime_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest outbound arrival hour (0-23, local)",
                    "title": "Atime To"
                  },
                  "cabinClass": {
                    "anyOf": [
                      {
                        "enum": [
                          "M",
                          "W",
                          "C",
                          "F"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "M=economy, W=premium economy, C=business, F=first",
                    "title": "Cabinclass"
                  },
                  "children": {
                    "default": 0,
                    "description": "Number of children (2-11)",
                    "maximum": 8,
                    "minimum": 0,
                    "title": "Children",
                    "type": "integer"
                  },
                  "children_hand_bags": {
                    "anyOf": [
                      {
                        "items": {
                          "maximum": 1,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 8,
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Cabin (hand) bags per child, one entry per child (each 0-1), e.g. [1]",
                    "title": "Children Hand Bags"
                  },
                  "children_hold_bags": {
                    "anyOf": [
                      {
                        "items": {
                          "maximum": 2,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "maxItems": 8,
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Checked (hold) bags per child, one entry per child (each 0-2), e.g. [2]",
                    "title": "Children Hold Bags"
                  },
                  "currency": {
                    "default": "EUR",
                    "description": "Currency code (e.g. EUR, USD)",
                    "maxLength": 3,
                    "minLength": 1,
                    "title": "Currency",
                    "type": "string"
                  },
                  "departureDate": {
                    "description": "Departure date in dd/mm/yyyy — the day to fly, or the earliest date of a range (see departureDateTo)",
                    "maxLength": 10,
                    "title": "Departuredate",
                    "type": "string"
                  },
                  "departureDateFlexDays": {
                    "default": 0,
                    "description": "Search +/- this many days around departureDate (symmetric). Leave 0 when using departureDateTo",
                    "maximum": 10,
                    "minimum": 0,
                    "title": "Departuredateflexdays",
                    "type": "integer"
                  },
                  "departureDateTo": {
                    "anyOf": [
                      {
                        "maxLength": 10,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest departure date in dd/mm/yyyy for an explicit range [departureDate .. departureDateTo]. Use instead of departureDateFlexDays for a one-directional or asymmetric range; must be \u003e= departureDate",
                    "title": "Departuredateto"
                  },
                  "dtime_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Earliest outbound departure hour (0-23, local)",
                    "title": "Dtime From"
                  },
                  "dtime_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest outbound departure hour (0-23, local)",
                    "title": "Dtime To"
                  },
                  "exclude_airlines": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Exclude flights operated by these airlines — comma-separated IATA codes, e.g. 'FR,W6'. Mutually exclusive with select_airlines",
                    "title": "Exclude Airlines"
                  },
                  "exclude_stopover_airports": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Never connect via these airports — comma-separated IATA codes",
                    "title": "Exclude Stopover Airports"
                  },
                  "exclude_stopover_countries": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Never connect via these countries — comma-separated ISO 3166-1 alpha-2 codes",
                    "title": "Exclude Stopover Countries"
                  },
                  "flyFrom": {
                    "description": "Origin: IATA code, city or airport name (e.g. \"PRG\", \"Prague\", \"London Heathrow\")",
                    "maxLength": 100,
                    "minLength": 1,
                    "title": "Flyfrom",
                    "type": "string"
                  },
                  "flyTo": {
                    "description": "Destination: IATA code, city or airport name",
                    "maxLength": 100,
                    "minLength": 1,
                    "title": "Flyto",
                    "type": "string"
                  },
                  "fly_days": {
                    "anyOf": [
                      {
                        "maxLength": 32,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Allowed outbound departure weekdays — comma-separated 0=Sun..6=Sat, e.g. '1,2,3,4,5' for weekdays",
                    "title": "Fly Days"
                  },
                  "infants": {
                    "default": 0,
                    "description": "Number of infants (\u003c2)",
                    "maximum": 4,
                    "minimum": 0,
                    "title": "Infants",
                    "type": "integer"
                  },
                  "locale": {
                    "default": "en",
                    "description": "Locale (e.g. en, de, fr)",
                    "maxLength": 10,
                    "minLength": 1,
                    "title": "Locale",
                    "type": "string"
                  },
                  "max_fly_duration": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum total flight duration in hours",
                    "title": "Max Fly Duration"
                  },
                  "max_sector_stopovers": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum number of stopovers (connections) allowed per flight sector",
                    "title": "Max Sector Stopovers"
                  },
                  "nights_in_dst_from": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Minimum nights at destination before return flight. Turns the search into a return search",
                    "title": "Nights In Dst From"
                  },
                  "nights_in_dst_to": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum nights at destination before return flight",
                    "title": "Nights In Dst To"
                  },
                  "one_for_city": {
                    "default": false,
                    "description": "If true, return only the single best result per destination city — useful for 'explore' searches with broad destinations",
                    "title": "One For City",
                    "type": "boolean"
                  },
                  "price_from": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Minimum total price filter in the specified currency",
                    "title": "Price From"
                  },
                  "price_to": {
                    "anyOf": [
                      {
                        "minimum": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum total price filter in the specified currency",
                    "title": "Price To"
                  },
                  "ret_atime_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Earliest return arrival hour (0-23, local)",
                    "title": "Ret Atime From"
                  },
                  "ret_atime_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest return arrival hour (0-23, local)",
                    "title": "Ret Atime To"
                  },
                  "ret_dtime_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Earliest return departure hour (0-23, local)",
                    "title": "Ret Dtime From"
                  },
                  "ret_dtime_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "le": 23,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest return departure hour (0-23, local)",
                    "title": "Ret Dtime To"
                  },
                  "ret_fly_days": {
                    "anyOf": [
                      {
                        "maxLength": 32,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Allowed return departure weekdays — comma-separated 0=Sun..6=Sat",
                    "title": "Ret Fly Days"
                  },
                  "returnDate": {
                    "anyOf": [
                      {
                        "maxLength": 10,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Return date in dd/mm/yyyy — the day to fly back, or the earliest return date of a range (omit for one-way)",
                    "title": "Returndate"
                  },
                  "returnDateFlexDays": {
                    "default": 0,
                    "description": "Search +/- this many days around returnDate (symmetric). Leave 0 when using returnDateTo",
                    "maximum": 10,
                    "minimum": 0,
                    "title": "Returndateflexdays",
                    "type": "integer"
                  },
                  "returnDateTo": {
                    "anyOf": [
                      {
                        "maxLength": 10,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latest return date in dd/mm/yyyy for an explicit range [returnDate .. returnDateTo]. Requires returnDate; use instead of returnDateFlexDays; must be \u003e= returnDate",
                    "title": "Returndateto"
                  },
                  "select_airlines": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Only include flights operated by these airlines — comma-separated IATA codes, e.g. 'FR,U2,BA'. Mutually exclusive with exclude_airlines",
                    "title": "Select Airlines"
                  },
                  "sort": {
                    "default": "price",
                    "description": "Result ordering",
                    "enum": [
                      "price",
                      "duration",
                      "quality",
                      "date",
                      "popularity"
                    ],
                    "title": "Sort",
                    "type": "string"
                  },
                  "stopover_airports": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Only connect via these airports — comma-separated IATA codes. Constrains connecting flights only; direct (non-stop) flights are still returned.",
                    "title": "Stopover Airports"
                  },
                  "stopover_countries": {
                    "anyOf": [
                      {
                        "maxLength": 200,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Only connect via these countries — comma-separated ISO 3166-1 alpha-2 codes, e.g. 'DE,AT'. Constrains connecting flights only; direct (non-stop) flights are still returned.",
                    "title": "Stopover Countries"
                  },
                  "stopover_from": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Minimum layover duration in hours",
                    "title": "Stopover From"
                  },
                  "stopover_to": {
                    "anyOf": [
                      {
                        "ge": 0,
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Maximum layover duration in hours",
                    "title": "Stopover To"
                  }
                },
                "required": [
                  "flyFrom",
                  "flyTo",
                  "departureDate"
                ],
                "title": "search_flightsArguments",
                "type": "object"
              },
              "outputSchema": {
                "$defs": {
                  "SearchFlightsBaggageOutput": {
                    "description": "Included per-traveler baggage counts (see ``transform._included_baggage``).",
                    "properties": {
                      "cabinBag": {
                        "default": 0,
                        "title": "Cabinbag",
                        "type": "integer"
                      },
                      "checkedBag": {
                        "default": 0,
                        "title": "Checkedbag",
                        "type": "integer"
                      },
                      "personalItem": {
                        "default": 0,
                        "title": "Personalitem",
                        "type": "integer"
                      }
                    },
                    "title": "SearchFlightsBaggageOutput",
                    "type": "object"
                  },
                  "SearchFlightsItineraryOutput": {
                    "additionalProperties": true,
                    "properties": {
                      "baggage": {
                        "anyOf": [
                          {
                            "$ref": "#/$defs/SearchFlightsBaggageOutput"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null
                      },
                      "bookingUrl": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Bookingurl"
                      },
                      "id": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Id"
                      },
                      "imageId": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Imageid"
                      },
                      "inbound": {
                        "anyOf": [
                          {
                            "$ref": "#/$defs/SearchFlightsLegOutput"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null
                      },
                      "outbound": {
                        "anyOf": [
                          {
                            "$ref": "#/$defs/SearchFlightsLegOutput"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null
                      },
                      "price": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Price"
                      },
                      "priceFormatted": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Priceformatted"
                      },
                      "totalDurationSeconds": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Totaldurationseconds"
                      }
                    },
                    "title": "SearchFlightsItineraryOutput",
                    "type": "object"
                  },
                  "SearchFlightsLegOutput": {
                    "additionalProperties": true,
                    "properties": {
                      "arrivalTime": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Arrivaltime"
                      },
                      "cabinClass": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Cabinclass"
                      },
                      "departureTime": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Departuretime"
                      },
                      "durationSeconds": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Durationseconds"
                      },
                      "from": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "From"
                      },
                      "route": {
                        "items": {
                          "type": "string"
                        },
                        "title": "Route",
                        "type": "array"
                      },
                      "segments": {
                        "items": {
                          "$ref": "#/$defs/SearchFlightsSegmentOutput"
                        },
                        "title": "Segments",
                        "type": "array"
                      },
                      "stops": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Stops"
                      },
                      "to": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "To"
                      }
                    },
                    "title": "SearchFlightsLegOutput",
                    "type": "object"
                  },
                  "SearchFlightsPassengersOutput": {
                    "properties": {
                      "adults": {
                        "default": 0,
                        "title": "Adults",
                        "type": "integer"
                      },
                      "children": {
                        "default": 0,
                        "title": "Children",
                        "type": "integer"
                      },
                      "infants": {
                        "default": 0,
                        "title": "Infants",
                        "type": "integer"
                      }
                    },
                    "title": "SearchFlightsPassengersOutput",
                    "type": "object"
                  },
                  "SearchFlightsSegmentOutput": {
                    "additionalProperties": true,
                    "properties": {
                      "arrivalTime": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Arrivaltime"
                      },
                      "cabinClass": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Cabinclass"
                      },
                      "carrier": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Carrier"
                      },
                      "carrierName": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Carriername"
                      },
                      "departureTime": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Departuretime"
                      },
                      "durationSeconds": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Durationseconds"
                      },
                      "flightNumber": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Flightnumber"
                      },
                      "from": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "From"
                      },
                      "fromCity": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Fromcity"
                      },
                      "fromCountry": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Fromcountry"
                      },
                      "fromName": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Fromname"
                      },
                      "to": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "To"
                      },
                      "toCity": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Tocity"
                      },
                      "toCountry": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Tocountry"
                      },
                      "toName": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "title": "Toname"
                      }
                    },
                    "title": "SearchFlightsSegmentOutput",
                    "type": "object"
                  }
                },
                "additionalProperties": true,
                "description": "Wire shape for ``structuredContent`` (see ``transform.format_itineraries``).",
                "properties": {
                  "currency": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Currency"
                  },
                  "error": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "title": "Error"
                  },
                  "itineraries": {
                    "items": {
                      "$ref": "#/$defs/SearchFlightsItineraryOutput"
                    },
                    "title": "Itineraries",
                    "type": "array"
                  },
                  "passengers": {
                    "anyOf": [
                      {
                        "$ref": "#/$defs/SearchFlightsPassengersOutput"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null
                  },
                  "query": {
                    "title": "Query",
                    "type": "string"
                  },
                  "resultsCount": {
                    "default": 0,
                    "title": "Resultscount",
                    "type": "integer"
                  },
                  "searchTimeMs": {
                    "default": 0,
                    "title": "Searchtimems",
                    "type": "integer"
                  }
                },
                "required": [
                  "query"
                ],
                "title": "SearchFlightsStructuredOutput",
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true
              }
            },
            {
              "name": "feedback-to-devs",
              "title": "Send Feedback to Developers",
              "description": "Send feedback, bug reports, or feature requests about the Kiwi.com search-flight MCP tool to its developers. This channel is ONLY for the flight search tool — search results, pricing, itineraries, filters, or errors in search responses. Do NOT use it for other MCP servers, Claude/app behaviour, account or booking management, voice mode, or unrelated Kiwi.com features; those won't reach the right team. Include error messages, logs, or context that would help the developers reproduce the issue.",
              "inputSchema": {
                "properties": {
                  "text": {
                    "description": "The content of the feedback. This is ONLY for the Kiwi.com search-flight MCP tool (search results, pricing, itineraries, filters, search errors) — not other MCP servers, Claude/app behaviour, or general Kiwi.com products. Include error messages, logs, or context that would help the developers reproduce the issue.",
                    "maxLength": 3000,
                    "minLength": 1,
                    "title": "Text",
                    "type": "string"
                  }
                },
                "required": [
                  "text"
                ],
                "title": "feedback_to_devsArguments",
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "title": "feedback_to_devsDictOutput",
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            }
          ],
          "schemaTokens": 4527,
          "changedAt": "2026-10-08T21:33:51.894639Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 4527,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 2
            },
            "findings": [
              {
                "rule": "TC07",
                "severity": "warn",
                "tool": "search-flight",
                "message": "the description is about 519 tokens",
                "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "search-flight",
                "message": "the definition is about 4,192 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC29",
                "severity": "note",
                "message": "about 561 tokens (12% of the definitions) are titles that repeat property or function names",
                "fix": "Strip \"title\" keys that only restate a name before listing tools."
              }
            ]
          }
        },
        "updatedAt": "2026-10-08T21:58:00.546184217Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "Hotelbeds (HBX Group)",
        "b": "Kiwi.com s.r.o.",
        "name": "Vendor"
      },
      {
        "a": "https://api.test.hotelbeds.com",
        "b": "https://mcp.kiwi.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Your plan",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Proprietary hosted service. The public repository holds only a README and has no licence file",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "2",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2025-08-07",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-09-07",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "12 stars",
        "name": "Popularity"
      },
      {
        "a": "2.5/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Hotelbeds Hotel Booking API's 36.3 (F), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Hotelbeds Hotel Booking API or Kiwi.com MCP Server?"
      },
      {
        "answer": "Hotelbeds Hotel Booking API needs an API key. Kiwi.com MCP Server needs no key.",
        "question": "Do Hotelbeds Hotel Booking API and Kiwi.com MCP Server need an API key?"
      },
      {
        "answer": "Yes. Hotelbeds Hotel Booking API has a hosted endpoint at https://api.test.hotelbeds.com and Kiwi.com MCP Server at https://mcp.kiwi.com.",
        "question": "Can an agent call Hotelbeds Hotel Booking API and Kiwi.com MCP Server without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "A travel company with a Hotelbeds contract that wants wholesale rates behind its agent, and for prototyping hotel search without a sales call.",
        "slug": "hotelbeds",
        "watchFor": "50 requests a day on evaluation, and the 51st returns a 403"
      },
      {
        "aheadOn": [
          "Reliability, 45 against 33",
          "Agent ergonomics, 66 against 41",
          "Security \u0026 auth, 54 against 38",
          "Payments \u0026 pricing, 55 against 20",
          "Maintenance \u0026 community, 13 against 3",
          "Transparency \u0026 trust, 66 against 50"
        ],
        "also": [
          "No key needed to call it"
        ],
        "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"
      }
    ],
    "job": {
      "capability": "travel.search",
      "name": "Travel search"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/booking-demand-api-vs-hotelbeds.json",
        "title": "Booking.com Demand API vs Hotelbeds Hotel Booking API",
        "url": "https://www.anchorterminal.com/compare/booking-demand-api-vs-hotelbeds"
      },
      {
        "json": "https://www.anchorterminal.com/compare/duffel-vs-hotelbeds.json",
        "title": "Duffel Flights and Stays API vs Hotelbeds Hotel Booking API",
        "url": "https://www.anchorterminal.com/compare/duffel-vs-hotelbeds"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expedia-rapid-vs-hotelbeds.json",
        "title": "Expedia Group Rapid API vs Hotelbeds Hotel Booking API",
        "url": "https://www.anchorterminal.com/compare/expedia-rapid-vs-hotelbeds"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-letsfg.json",
        "title": "Hotelbeds Hotel Booking API vs LetsFG",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-letsfg"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-liteapi.json",
        "title": "Hotelbeds Hotel Booking API vs LiteAPI (Nuitee Connect)",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-liteapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-ratehawk.json",
        "title": "Hotelbeds Hotel Booking API vs ETG API (RateHawk)",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-ratehawk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-skyscanner.json",
        "title": "Hotelbeds Hotel Booking API vs Skyscanner Travel APIs",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-skyscanner"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-travelport.json",
        "title": "Hotelbeds Hotel Booking API vs Travelport TripServices APIs",
        "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-travelport"
      },
      {
        "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/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/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-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/flightclaw-vs-hotelbeds.json",
        "title": "FlightClaw vs Hotelbeds Hotel Booking API",
        "url": "https://www.anchorterminal.com/compare/flightclaw-vs-hotelbeds"
      },
      {
        "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/kiwi-mcp-vs-ratehawk.json",
        "title": "Kiwi.com MCP Server vs ETG API (RateHawk)",
        "url": "https://www.anchorterminal.com/compare/kiwi-mcp-vs-ratehawk"
      }
    ],
    "scores": [
      {
        "by": 12,
        "edge": "kiwi-mcp",
        "hotelbeds": 33,
        "key": "reliability",
        "kiwi-mcp": 45,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "edge": "hotelbeds",
        "hotelbeds": 57,
        "key": "schema",
        "kiwi-mcp": 55,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 25,
        "edge": "kiwi-mcp",
        "hotelbeds": 41,
        "key": "ergonomics",
        "kiwi-mcp": 66,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 16,
        "edge": "kiwi-mcp",
        "hotelbeds": 38,
        "key": "security",
        "kiwi-mcp": 54,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 35,
        "edge": "kiwi-mcp",
        "hotelbeds": 20,
        "key": "payments",
        "kiwi-mcp": 55,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 10,
        "edge": "kiwi-mcp",
        "hotelbeds": 3,
        "key": "maintenance",
        "kiwi-mcp": 13,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 16,
        "edge": "kiwi-mcp",
        "hotelbeds": 50,
        "key": "transparency",
        "kiwi-mcp": 66,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Hotelbeds Hotel Booking API's 36.3 (F), and leads in 6 of 7 scored categories. Both do travel search.",
    "verdicts": {
      "hotelbeds": "Free evaluation key on registration, no card and no sales call. 50 requests a day on evaluation, and the 51st returns a 403.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp",
    "json": "https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp.md",
    "slim": "https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp.min.md"
  },
  "markdown": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Hotelbeds Hotel Booking API's 36.3 (F), and leads in 6 of 7 scored categories. Both do travel search.\n\n- Hotelbeds Hotel Booking API: grade F, 36.3/100, rank #705 of 722. Markdown https://www.anchorterminal.com/tools/hotelbeds.md · JSON https://www.anchorterminal.com/api/v1/tools/hotelbeds.json\n- Kiwi.com MCP Server: grade D, 51.9/100, rank #571 of 722. Markdown https://www.anchorterminal.com/tools/kiwi-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json\n\n## Which one, for what\n\n### Hotelbeds Hotel Booking API (F)\n\nGood for: A travel company with a Hotelbeds contract that wants wholesale rates behind its agent, and for prototyping hotel search without a sales call.\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: 50 requests a day on evaluation, and the 51st returns a 403\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- Reliability, 45 against 33\n- Agent ergonomics, 66 against 41\n- Security \u0026 auth, 54 against 38\n- Payments \u0026 pricing, 55 against 20\n- Maintenance \u0026 community, 13 against 3\n- Transparency \u0026 trust, 66 against 50\n\nAlso in its favour:\n- No key needed to call it\n\nWatch for: Search only. Booking, payment, changes and cancellations happen on kiwi.com through the `bookingUrl` in each result\n\n\n## Score by category\n\n| Category | Weight | Hotelbeds Hotel Booking API | Kiwi.com MCP Server | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 33 | 45 | Kiwi.com MCP Server +12 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 57 | 55 | Hotelbeds Hotel Booking API +2 |\n| Agent ergonomics | 13% (16.2 this run) | 41 | 66 | Kiwi.com MCP Server +25 |\n| Security \u0026 auth | 14% (17.5 this run) | 38 | 54 | Kiwi.com MCP Server +16 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 55 | Kiwi.com MCP Server +35 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 3 | 13 | Kiwi.com MCP Server +10 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 50 | 66 | Kiwi.com MCP Server +16 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **36.3 · F** | **51.9 · D** | |\n\n## Facts side by side\n\n| Fact | Hotelbeds Hotel Booking API | Kiwi.com MCP Server |\n| --- | --- | --- |\n| Kind | HTTP API | MCP server |\n| Vendor | Hotelbeds (HBX Group) | Kiwi.com s.r.o. |\n| Hosted endpoint | `https://api.test.hotelbeds.com` | `https://mcp.kiwi.com` |\n| Transports | HTTP | Streamable HTTP |\n| Auth | API key | None |\n| Pricing | Your plan | Free |\n| x402 | no | no |\n| Licence | none | Proprietary hosted service. The public repository holds only a README and has no licence file |\n| Tools exposed | none | 2 |\n| Read-only variant documented | no | yes |\n| llms.txt | no | no |\n| Last release | none | 2025-08-07 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | no date given | 2026-09-07 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | none | 12 stars |\n| Agent reviews | 2.5/5 (2) | none |\n\n## Verdicts\n\n**Hotelbeds Hotel Booking API.** Free evaluation key on registration, no card and no sales call. 50 requests a day on evaluation, and the 51st returns a 403.\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## Before you call either\n\n### Hotelbeds Hotel Booking API\n\n1. Compute `X-Signature` fresh per request from key, secret and the current epoch seconds, in that order\n2. Budget the 50 daily evaluation calls; cache hotel content and only call availability for real dates\n3. Run CheckRate on a rate before booking when the availability response says it needs rechecking\n4. Read a 403 on the test host as the daily quota first, not a bad key\n5. Simulate a cancellation before running it\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## Questions\n\n### Which is better for AI agents, Hotelbeds Hotel Booking API or Kiwi.com MCP Server?\n\nKiwi.com MCP Server scores 51.9 (D) on agent readiness against Hotelbeds Hotel Booking API's 36.3 (F), and leads in 6 of 7 scored categories.\n\n### Do Hotelbeds Hotel Booking API and Kiwi.com MCP Server need an API key?\n\nHotelbeds Hotel Booking API needs an API key. Kiwi.com MCP Server needs no key.\n\n### Can an agent call Hotelbeds Hotel Booking API and Kiwi.com MCP Server without installing anything?\n\nYes. Hotelbeds Hotel Booking API has a hosted endpoint at https://api.test.hotelbeds.com and Kiwi.com MCP Server at https://mcp.kiwi.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp.json, and with the fewest tokens: https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"hotelbeds\", \"b\": \"kiwi-mcp\"}`. From a terminal: `anchor compare hotelbeds kiwi-mcp`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/hotelbeds.json and https://www.anchorterminal.com/api/v1/tools/kiwi-mcp.json\n\n## Other comparisons with Hotelbeds Hotel Booking API or Kiwi.com MCP Server\n\n- [Booking.com Demand API vs Hotelbeds Hotel Booking API](https://www.anchorterminal.com/compare/booking-demand-api-vs-hotelbeds.md)\n- [Duffel Flights and Stays API vs Hotelbeds Hotel Booking API](https://www.anchorterminal.com/compare/duffel-vs-hotelbeds.md)\n- [Expedia Group Rapid API vs Hotelbeds Hotel Booking API](https://www.anchorterminal.com/compare/expedia-rapid-vs-hotelbeds.md)\n- [Hotelbeds Hotel Booking API vs LetsFG](https://www.anchorterminal.com/compare/hotelbeds-vs-letsfg.md)\n- [Hotelbeds Hotel Booking API vs LiteAPI (Nuitee Connect)](https://www.anchorterminal.com/compare/hotelbeds-vs-liteapi.md)\n- [Hotelbeds Hotel Booking API vs ETG API (RateHawk)](https://www.anchorterminal.com/compare/hotelbeds-vs-ratehawk.md)\n- [Hotelbeds Hotel Booking API vs Skyscanner Travel APIs](https://www.anchorterminal.com/compare/hotelbeds-vs-skyscanner.md)\n- [Hotelbeds Hotel Booking API vs Travelport TripServices APIs](https://www.anchorterminal.com/compare/hotelbeds-vs-travelport.md)\n- [Duffel Flights and Stays API vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/duffel-vs-kiwi-mcp.md)\n- [FlightClaw vs Kiwi.com MCP Server](https://www.anchorterminal.com/compare/flightclaw-vs-kiwi-mcp.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 Travelport TripServices APIs](https://www.anchorterminal.com/compare/kiwi-mcp-vs-travelport.md)\n- [FlightClaw vs Hotelbeds Hotel Booking API](https://www.anchorterminal.com/compare/flightclaw-vs-hotelbeds.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- [Kiwi.com MCP Server vs ETG API (RateHawk)](https://www.anchorterminal.com/compare/kiwi-mcp-vs-ratehawk.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Hotelbeds Hotel Booking API vs Kiwi.com MCP Server",
        "url": ""
      }
    ],
    "description": "Kiwi.com MCP Server scores 51.9 (D) on agent readiness against Hotelbeds Hotel Booking API's 36.3 (F), and leads in 6 of 7 scored categories. Both do travel search. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Hotelbeds Hotel Booking API F 36.3",
      "Kiwi.com MCP Server D 51.9",
      "scores"
    ],
    "h1": "Hotelbeds Hotel Booking API vs Kiwi.com MCP Server",
    "image": "https://www.anchorterminal.com/assets/og/compare-hotelbeds-vs-kiwi-mcp.png",
    "path": "/compare/hotelbeds-vs-kiwi-mcp",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Hotelbeds Hotel Booking API vs Kiwi.com MCP Server for AI agents",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/hotelbeds-vs-kiwi-mcp"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 680
  },
  "version": 1
}
