# Kiwi.com MCP tools

> Every Kiwi.com MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/kiwi-com

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

13 tools for Kiwi.com on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your own Kiwi.com account (the one that holds your bookings)
- Integration page: https://cotlet.dev/integrations/kiwi-com-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `kiwi-com_search_flights` | read | Flights between two places for set dates, with price, duration and a booking link. |
| `kiwi-com_list_trips` | read | Trips on your account with booking number, route, dates and whether travel documents are missing. |
| `kiwi-com_get_trip` | read | One trip: flights, passengers, bags, seats, check-in status and which travel documents are still needed. |
| `kiwi-com_get_boarding_passes` | read | Boarding passes Kiwi.com received after checking you in, as download links. |
| `kiwi-com_get_baggage_options` | read | Bags you can still add to a trip, with the price of each. |
| `kiwi-com_get_seat_map` | read | Seats you can pick on one flight of a trip, where the airline offers seat selection. |
| `kiwi-com_get_cancellation_options` | read | What you get back if you cancel this trip now, under its ticket type. |
| `kiwi-com_get_invoice` | read | Invoice of a booking as a PDF download link. |
| `kiwi-com_get_credit_balance` | read | Your Kiwi.com Credit balance and its expiration date. |
| `kiwi-com_add_travel_documents` | write | Add the passport or ID details Kiwi.com needs to check a passenger in. |
| `kiwi-com_add_baggage` | write | Buy a bag from get_baggage_options for the price shown there. |
| `kiwi-com_select_seat` | write | Pick a seat for a passenger on one flight, where the airline offers it. |
| `kiwi-com_cancel_trip` | write | Cancel a trip and request the refund you picked from get_cancellation_options. |

## Search flights

MCP tool: `kiwi-com_search_flights`

Access: read.

Searches Kiwi.com flights for one-way or round trips and returns the flights Kiwi.com finds, each with a link to book on Kiwi.com. Date flexibility goes up to 3 days either side. It does not need your trips, so it works before you book anything.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `from` | string | yes | City or airport, name or IATA code. |
| `to` | string | yes | City or airport, name or IATA code. |
| `departure_date` | date | yes | Outbound date. |
| `return_date` | date | no | Leave out for one-way. |
| `flex_days` | integer | no | Search this many days either side, 0 to 3. Default: 0. |
| `adults` | integer | no | Default: 1. |
| `cabin_class` | enum | no | economy, premium_economy, business or first. Default: economy. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_search_flights",
    "arguments": {
      "from": "from",
      "to": "to",
      "departure_date": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "flights": [
      {
        "price": {
          "amount": 128,
          "currency": "EUR"
        },
        "route": "PRG-LIS",
        "departs": "2026-11-12T06:40:00+01:00",
        "arrives": "2026-11-12T09:10:00+00:00",
        "duration": "4h 30m",
        "stops": 0,
        "booking_url": "https://www.kiwi.com/en/booking?token=example1"
      },
      {
        "price": {
          "amount": 112,
          "currency": "EUR"
        },
        "route": "PRG-LIS",
        "departs": "2026-11-13T13:55:00+01:00",
        "arrives": "2026-11-13T18:20:00+00:00",
        "duration": "5h 25m",
        "stops": 1,
        "booking_url": "https://www.kiwi.com/en/booking?token=example2"
      }
    ]
  },
  "isError": false
}
```

## List trips

MCP tool: `kiwi-com_list_trips`

Access: read.

Returns the trips on your account. Each trip shows the booking number, route, departure, passenger count and documents_missing. Use trip_id in every other trip tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `when` | enum | no | upcoming, past or all. Default: upcoming. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_list_trips",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trips": [
      {
        "trip_id": "512834907",
        "route": "PRG-BCN-PRG",
        "departs": "2026-11-14T07:20:00+01:00",
        "passengers": 1,
        "documents_missing": true
      },
      {
        "trip_id": "734120655",
        "route": "PRG-BER",
        "departs": "2026-12-02T09:05:00+01:00",
        "passengers": 2,
        "documents_missing": false
      }
    ]
  },
  "isError": false
}
```

## Get trip

MCP tool: `kiwi-com_get_trip`

Access: read.

Returns the full trip as shown on its booking page: each flight with its flight_id, each passenger with passenger_id, bags and seats already booked, check-in status, and the travel documents Kiwi.com still needs per passenger. Use the IDs in the write tools.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_get_trip",
    "arguments": {
      "trip_id": "trip_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "512834907",
    "status": "confirmed",
    "flights": [
      {
        "flight_id": "f1",
        "route": "PRG-BCN",
        "departs": "2026-11-14T07:20:00+01:00",
        "carrier": "Example Air"
      },
      {
        "flight_id": "f2",
        "route": "BCN-PRG",
        "departs": "2026-11-17T18:45:00+01:00",
        "carrier": "Example Air"
      }
    ],
    "passengers": [
      {
        "passenger_id": "p1",
        "name": "Ana Lopez",
        "bags": [
          "Cabin bag"
        ],
        "seats": {},
        "documents_needed": [
          "document number",
          "expiry date"
        ]
      }
    ],
    "check_in": "waiting for the airline to open"
  },
  "isError": false
}
```

## Get boarding passes

MCP tool: `kiwi-com_get_boarding_passes`

Access: read.

Returns one download link per passenger and flight once Kiwi.com has checked you in. Before that the list is empty and check_in says what is pending. If you checked in with the airline yourself, the airline sent the pass and Kiwi.com has none.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_get_boarding_passes",
    "arguments": {
      "trip_id": "trip_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "512834907",
    "passes": [
      {
        "passenger_id": "p1",
        "flight_id": "f1",
        "url": "https://cotlet.dev/api/v1/files/example/boarding-pass-f1.pdf"
      },
      {
        "passenger_id": "p1",
        "flight_id": "f2",
        "url": "https://cotlet.dev/api/v1/files/example/boarding-pass-f2.pdf"
      }
    ]
  },
  "isError": false
}
```

## Get baggage options

MCP tool: `kiwi-com_get_baggage_options`

Access: read.

Returns the bag options Kiwi.com offers for the itinerary, each with its price and the passenger it is for. Options are sold for the whole itinerary. The list is empty when Kiwi.com no longer sells bags for the trip, which is the case from 36 hours before departure, and for self-transfer itineraries with short layovers.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_get_baggage_options",
    "arguments": {
      "trip_id": "trip_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "512834907",
    "options": [
      {
        "bag_option_id": "bo_chk20_p1",
        "passenger_id": "p1",
        "description": "Checked bag, 20 kg",
        "price": {
          "amount": 64,
          "currency": "EUR"
        }
      },
      {
        "bag_option_id": "bo_cab_p1",
        "passenger_id": "p1",
        "description": "Cabin bag, 10 kg",
        "price": {
          "amount": 38,
          "currency": "EUR"
        }
      }
    ]
  },
  "isError": false
}
```

## Get seat map

MCP tool: `kiwi-com_get_seat_map`

Access: read.

Returns the seat map Kiwi.com shows for one flight, with each free seat and its price if there is one. Seat selection is open up to 48 hours before departure. If the airline does not offer it, the list is empty and the airline assigns your seat at check-in at no extra cost.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |
| `flight_id` | string | yes | Flight ID from get_trip. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_get_seat_map",
    "arguments": {
      "trip_id": "trip_8c41d2",
      "flight_id": "flight_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "512834907",
    "flight_id": "f1",
    "seats": [
      {
        "seat": "14C",
        "price": {
          "amount": 9,
          "currency": "EUR"
        }
      },
      {
        "seat": "14D",
        "price": {
          "amount": 9,
          "currency": "EUR"
        }
      }
    ]
  },
  "isError": false
}
```

## Get cancellation options

MCP tool: `kiwi-com_get_cancellation_options`

Access: read.

Returns the refund options Kiwi.com offers for this trip, each with a refund_option_id, where the money goes and the amount. Requests follow the rules of each airline and the ticket type: Saver and Standard tickets allow cancelling single flights, Flexi only the whole booking. The call changes nothing.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_get_cancellation_options",
    "arguments": {
      "trip_id": "trip_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "734120655",
    "ticket_type": "Standard",
    "options": [
      {
        "refund_option_id": "rf_credit",
        "refund_as": "Kiwi.com Credit",
        "amount": 112.5,
        "currency": "EUR"
      },
      {
        "refund_option_id": "rf_original",
        "refund_as": "Original payment",
        "amount": 98,
        "currency": "EUR"
      }
    ]
  },
  "isError": false
}
```

## Get invoice

MCP tool: `kiwi-com_get_invoice`

Access: read.

Returns the invoice Kiwi.com shows at the bottom of the booking page, as a PDF link. Billing details on it cannot be changed after booking, as Kiwi.com reports them to local tax authorities.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_get_invoice",
    "arguments": {
      "trip_id": "trip_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "512834907",
    "invoice_url": "https://cotlet.dev/api/v1/files/example/invoice-512834907.pdf",
    "issued_on": "2026-09-02"
  },
  "isError": false
}
```

## Get Credit balance

MCP tool: `kiwi-com_get_credit_balance`

Access: read.

Returns the Kiwi.com Credit shown in your account, with the expiration date of each part. Credit is what Kiwi.com often issues when it refunds a cancellation.

### Parameters

No parameters.

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_get_credit_balance",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "balance": {
      "amount": 112.5,
      "currency": "EUR"
    },
    "parts": [
      {
        "amount": 112.5,
        "currency": "EUR",
        "expires_on": "2028-09-18"
      }
    ]
  },
  "isError": false
}
```

## Add travel documents

MCP tool: `kiwi-com_add_travel_documents`

Access: write. Confirm: waits for the user's OK before it runs.

Saves the travel document details for one passenger, which Kiwi.com passes to the airline for check-in. It accepts them up to 24 hours before departure; later you check in with the airline. Send the fields get_trip lists under documents_needed. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |
| `passenger_id` | string | yes | Passenger ID from get_trip. |
| `details` | object | yes | The fields listed in documents_needed by get_trip, e.g. document_number and expiry_date. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_add_travel_documents",
    "arguments": {
      "trip_id": "512834907",
      "passenger_id": "p1",
      "details": {
        "document_number": "XK1234567",
        "expiry_date": "2031-04-18"
      }
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "512834907",
    "passenger_id": "p1",
    "status": "saved",
    "check_in": "waiting for the airline to open"
  },
  "isError": false
}
```

## Add baggage

MCP tool: `kiwi-com_add_baggage`

Access: write. Confirm: waits for the user's OK before it runs.

Adds one bag option to the booking and charges the price from get_baggage_options. The bag cannot be removed or moved to another passenger afterwards, and Kiwi.com may add a processing fee depending on your service package. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |
| `bag_option_id` | string | yes | Option ID from get_baggage_options. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_add_baggage",
    "arguments": {
      "trip_id": "512834907",
      "bag_option_id": "bo_chk20_p1"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "512834907",
    "status": "added",
    "bag": {
      "bag_option_id": "bo_chk20_p1",
      "description": "Checked bag, 20 kg",
      "passenger_id": "p1"
    },
    "price": {
      "amount": 64,
      "currency": "EUR"
    }
  },
  "isError": false
}
```

## Select seat

MCP tool: `kiwi-com_select_seat`

Access: write. Confirm: waits for the user's OK before it runs.

Reserves one seat from get_seat_map for one passenger on one flight, up to 48 hours before departure. The seat then shows on the e-ticket and in the trip. A seat with a price charges your payment method. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |
| `flight_id` | string | yes | Flight ID from get_trip. |
| `passenger_id` | string | yes | Passenger ID from get_trip. |
| `seat` | string | yes | Seat from get_seat_map, e.g. 14C. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_select_seat",
    "arguments": {
      "trip_id": "trip_8c41d2",
      "flight_id": "flight_8c41d2",
      "passenger_id": "passenger_8c41d2",
      "seat": "seat"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "512834907",
    "flight_id": "f1",
    "passenger_id": "p1",
    "seat": "14C",
    "status": "reserved",
    "price": {
      "amount": 9,
      "currency": "EUR"
    }
  },
  "isError": false
}
```

## Cancel trip

MCP tool: `kiwi-com_cancel_trip`

Access: write. Confirm: waits for the user's OK before it runs.

Sends the cancellation request to Kiwi.com, which handles it under the airline rules for your ticket type. Pass refund_option_id from get_cancellation_options. On Saver and Standard tickets you can name single flights in flight_ids; on Flexi tickets the whole booking is cancelled. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `trip_id` | string | yes | Booking number from list_trips. |
| `refund_option_id` | string | yes | Option ID from get_cancellation_options. |
| `flight_ids` | string[] | no | Cancel only these flights (Saver and Standard tickets). Default: whole trip. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "kiwi-com_cancel_trip",
    "arguments": {
      "trip_id": "734120655",
      "refund_option_id": "rf_credit"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "trip_id": "734120655",
    "status": "cancellation requested",
    "refund": {
      "refund_option_id": "rf_credit",
      "refund_as": "Kiwi.com Credit",
      "amount": 112.5,
      "currency": "EUR"
    }
  },
  "isError": false
}
```
