# Duffel MCP

> Duffel MCP connects your AI client directly to global travel infrastructure. You search and book flights, find hotel stays, and handle the whole itinerary—all through natural conversation. It lets your agent compare live prices, manage bookings, and process payments without opening a browser tab.

## Overview
- **Category:** payment-processing
- **Price:** Free
- **Tags:** flight-booking, hotel-search, travel-api, itinerary-management, airline-data

## Description

This connector turns your AI into a full-stack travel assistant. Forget manually switching between airline sites or booking platforms. You can simply tell your agent what trip you need, and it handles the rest. It searches for flights using `create_offer_request`, pulls real-time hotel rates with `search_stays`, and gives you options before you even know which ones matter. When you're ready to lock in a booking, it manages everything from creating an order via `create_order` to handling payments through `create_payment`. It also keeps your existing travel history neat by letting you list or change orders directly from the chat. Because Vinkius hosts this MCP, your agent gains access to all of Duffel's tools—everything from fetching airport codes with `get_airport` to viewing detailed seat maps via `get_seat_maps`. It’s basically a full travel agency in your conversation window.

## Tools

### book_stay
Finalizes and books an accommodation stay after rates are confirmed.

### cancel_order
Cancels a specific flight order based on its unique ID.

### change_order
Requests modifications to details (dates, passengers) for an existing trip order.

### create_offer_request
Initiates a request to gather multiple pricing options for potential flights.

### create_order
Creates and confirms a final flight booking or itinerary purchase.

### create_payment
Generates a payment link required to hold an order while finalizing details.

### create_webhook
Sets up automated data notifications for future events related to bookings.

### fetch_stay_rates
Retrieves the current pricing and availability across all options found during a stay search.

### get_accommodation
Fetches specific details about one particular hotel or lodging property.

### get_aircraft
Looks up technical specifications for a given type of airplane.

### get_airline
Retrieves information and operational details about a specific airline.

### get_airport
Finds detailed data, including codes and locations, for any airport worldwide.

### get_offer_request
Retrieves the details and status of a prior request to gather multiple offers.

### get_offer
Gets comprehensive pricing and availability data for a single flight offer.

### get_order
Pulls all specific information about an already existing, confirmed travel order.

### get_payment
Checks the status or details of a payment that was created for an order hold.

### list_accommodation
Retrieves a list of all properties found in a search result set.

### list_aircraft
Provides a catalog listing of different types of aircraft available globally.

### list_airlines
Returns an exhaustive list of operational airlines that service routes.

### list_airports
Generates a list of all airports and their associated codes/locations.

### list_offer_requests
Lists every offer request you have previously submitted for flights or travel.

### list_offers
Shows all current available flight offers tied to a specific request ID.

### list_orders
Provides an overview and list of all confirmed travel orders associated with your account.

### list_webhook_events
Retrieves records of automated webhooks that were triggered or received.

### price_offer
Verifies the final, locked-in price and services for a specific flight offer before booking.

### quote_stay
Generates a preliminary, non-binding quote for accommodation stays based on dates and guests.

### search_stays
Searches the database to find available hotels and lodging options within a given date range.

### get_seat_maps
Displays available seat configurations and layouts for a specific flight offer.

### suggest_accommodation
Suggests specific hotel names or properties by matching them against a provided keyword.

## Prompt Examples

**Prompt:** 
```
Search for one-way flights from JFK to LHR on October 12th for 1 adult in economy.
```

**Response:** 
```
I've created an offer request (ID: or_0000A...). I found several options, including a direct flight with British Airways for $540 and a Virgin Atlantic flight for $565. Would you like to see the full list of offers?
```

**Prompt:** 
```
List my recent flight orders and show me the status of the last one.
```

**Response:** 
```
Retrieving your orders... You have 3 recent orders. The latest one (ID: ord_0000B...) for your trip to Paris is currently 'confirmed'.
```

**Prompt:** 
```
Find hotels in Tokyo for check-in on Nov 1st and check-out on Nov 5th for 2 adults.
```

**Response:** 
```
Searching for stays in Tokyo... I found several accommodations. The 'Park Hyatt Tokyo' and 'Shinjuku Prince Hotel' are available for those dates. Should I fetch the specific rates for one of these?
```

## Capabilities

### Plan and compare trips
You can search for hotels, list accommodations, and create flight offer requests to build options based on natural language prompts.

### Manage bookings and payments
The agent handles complex actions like creating a final order (`create_order`), requesting payment holds (`create_payment`), or canceling existing travel reservations.

### Check real-time rates
You fetch live prices for both accommodations using `fetch_stay_rates` and specific flight offers to ensure you're getting the latest deals.

### Retrieve travel metadata
Access detailed, standardized data—like airport codes (`get_airport`) or airline information (`list_airlines`)—to validate trip details.

### Modify existing plans
You can change an order with `change_order` or retrieve your history by listing all current orders through `list_orders`.

## Use Cases

### The team needs to plan an emergency conference trip.
A project manager asks the agent for hotels in Dallas between Oct 10th and Oct 15th. The agent runs `search_stays`, presents a list, and then uses `fetch_stay_rates` to confirm which of those options has availability for 12 people.

### A client needs to compare three different flight routes.
The travel agent tells the AI: 'Find me all one-way flights from LAX to MIA in November.' The agent executes `create_offer_request`, uses `list_offers` to show options, and then lets the agent use `get_seat_maps` so the client can visualize the seats.

### The user needs to confirm an existing booking change.
Instead of calling customer service, the corporate manager asks the AI to check status. The agent runs `list_orders`, finds the ID, and then uses `change_order` to initiate a date shift.

### The developer needs structured trip data for an internal dashboard.
A developer calls the MCP's functions like `get_airline` and `list_airports` to ensure their custom agent can reliably validate airport codes and airline credentials before processing a booking.

## Benefits

- You get immediate pricing clarity. Instead of guessing, you use `price_offer` to verify the final service costs for any flight offer before committing.
- Managing existing trips is easy. Use `list_orders` or `get_order` to pull up your full itinerary and check its status without logging into a separate portal.
- Booking stays just got simple. You can use `search_stays` first, then `fetch_stay_rates` to get the exact cost for any property you find.
- The whole process is covered. If you need to change something, the MCP handles it with tools like `change_order`, minimizing your steps from four clicks to a single command.
- It's deep data access. You don't just book; you also get specialized context using `get_airport` or `list_airlines`, which is critical for complex multi-stop routes.

## How It Works

The bottom line is you don't need multiple websites; you just talk to your AI client.

1. Subscribe to this MCP and enter your Duffel Access Token into Vinkius.
2. Start chatting with your agent, asking it to search for a trip or list existing reservations.
3. Your agent uses the tools to fetch live data and presents you with actionable options for booking.

## Frequently Asked Questions

**How do I use Duffel MCP to book a hotel stay?**
Start by using `search_stays` to find properties and dates. Once you have options, run `fetch_stay_rates` on the specific hotels until you are ready to confirm with `book_stay`.

**What is the difference between `get_offer` and `list_offers`?**
`list_offers` shows all available options for a request ID. `get_offer`, however, pulls detailed data, including specific pricing and availability, for just one selected option.

**Can I use Duffel MCP to check my payment details?**
Yes. Use the `list_orders` tool to find your order ID, then call `get_payment` with that ID to verify status or amounts.

**Do I need a specific airport code for `get_airport`?**
No. You can ask the agent for general location data or just provide the city name; the tool handles looking up and validating the necessary codes for you.

**After I book a trip, how can I use `list_orders` to check my entire booking history and status?**
You retrieve all your past orders by calling `list_orders`. This returns an array of order objects, giving you the ID, dates, and current status for every flight or stay booked through Duffel. It's perfect for auditing records without manually checking emails.

**Before I search for flights, how can I use `list_airports` to verify if a specific airport code is available in the system?**
Running `list_airports` gives you a comprehensive list of all supported locations. This lets you validate your input codes before attempting any searches or creating offer requests, saving time and preventing bad API calls.

**If my initial flight search is wrong, how can I use `get_offer_request` to review and adjust the original parameters?**
You grab a specific request ID and pass it to `get_offer_request`. This pulls back all the details—the dates, origins, and passengers—so you can spot an error or tweak the criteria before re-running the search.

**If I only want to secure a flight but not commit funds immediately, what process do I use with `create_payment`?**
You first get a specific offer and then run `get_offer_request`. Once you're ready to hold it, calling `create_payment` initiates the payment process for that particular offer. This locks in pricing without finalizing the ticket.

**How do I search for flights between two cities?**
Use the `create_offer_request` tool. You'll need to provide the origin, destination, departure date, and passenger details. The agent will then return available flight offers.

**Can I see the seat map before booking a flight?**
Yes! Once you have an Offer ID, use the `get_seat_maps` tool to retrieve the visual layout and availability of seats for that specific flight offer.

**How do I find hotel rates for a specific search result?**
After performing a search with `search_stays`, use the `fetch_stay_rates` tool with the `search_result_id` to get all available pricing and room options for that accommodation.