get_offer_details
Retrieve detailed flight offer information including pricing, itinerary details, and airline information using the unique offer identifier.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| offerId | Yes | Unique identifier for the flight offer |
Implementation Reference
- src/server.ts:119-136 (handler)The MCP tool handler function for 'get_offer_details'. It takes OfferDetails params, calls flightClient.getOffer(params.offerId), formats the response as MCP content, and handles errors.async (params: OfferDetails) => { try { const response = await flightClient.getOffer(params.offerId); return { content: [ { type: 'text', text: JSON.stringify(response, null, 2) } ] }; } catch (error) { console.error(`Error getting offer details: ${error}`); throw error; } }
- src/models/flightSearch.ts:37-41 (schema)Zod schema and TypeScript type for the input parameters of the 'get_offer_details' tool, requiring a single 'offerId' string.export const offerDetailsSchema = z.object({ offerId: z.string().describe('Unique identifier for the flight offer') }); export type OfferDetails = z.infer<typeof offerDetailsSchema>;
- src/server.ts:116-137 (registration)Registration of the 'get_offer_details' MCP tool using server.tool(), specifying name, input schema, and handler function.server.tool( 'get_offer_details', offerDetailsSchema.shape, async (params: OfferDetails) => { try { const response = await flightClient.getOffer(params.offerId); return { content: [ { type: 'text', text: JSON.stringify(response, null, 2) } ] }; } catch (error) { console.error(`Error getting offer details: ${error}`); throw error; } } );
- src/api/duffelClient.ts:210-223 (helper)DuffelClient.getOffer method, which makes the HTTP GET request to Duffel's API to retrieve details for the specified offer ID. Called by the MCP tool handler.async getOffer(offerId: string): Promise<any> { try { if (!offerId.startsWith('off_')) { throw new Error('Invalid offer ID format - must start with "off_"'); } const response = await this.client.get(`/offers/${offerId}`); return response.data; } catch (error) { console.error(`Error getting offer ${offerId}: ${error}`); throw error; } }