get_flight_summary_full
Retrieve comprehensive flight data including takeoff/landing timings, locations, aircraft details, and operator information for specified time periods and search criteria.
Instructions
Returns comprehensive timings and locations of aircraft takeoffs and landings, including detailed flight, aircraft, and operator information. Both real-time and extensive historical data are available. Data is available starting from 2024-04-07 and will be extended further in the near future. IMPORTANT: flight_datetime_from and flight_datetime_to are required, and at least one additional search parameter (other than sort and limit) should be provided.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| flight_datetime_from | Yes | Start datetime (YYYY-MM-DDTHH:MM:SSZ). Requires flight_datetime_to. Cannot be used with flight_ids. | |
| flight_datetime_to | Yes | End datetime (YYYY-MM-DDTHH:MM:SSZ). Requires flight_datetime_from. Cannot be used with flight_ids. | |
| flights | No | Flight numbers (comma-separated values, max 15). | |
| callsigns | No | Flight callsigns (comma-separated values, max 15). | |
| registrations | No | Aircraft registration numbers (comma-separated values, max 15). | |
| painted_as | No | Aircraft painted in an airline's livery (ICAO code, comma-separated, max 15). | |
| operating_as | No | Aircraft operating under an airline's call sign (ICAO code, comma-separated, max 15). | |
| airports | No | Airports (IATA/ICAO/ISO 3166-1 alpha-2) or countries. Use format: [direction:]<code>. | |
| routes | No | Flights between airports/countries (e.g., SE-US, ESSA-JFK). Max 15. | |
| aircraft | No | Aircraft ICAO type codes (comma-separated, max 15). | |
| sort | No | Sorting order by first_seen (default: asc). | |
| limit | No | Limit of results. Recommended, unless needed. Max 20000. |
Implementation Reference
- src/server.ts:287-306 (handler)MCP tool handler for 'get_flight_summary_full'. Validates parameters, cleans null/empty values, calls FR24Client.getFlightSummaryFull, and returns formatted JSON response or error.try { validateHasRequiredParams(params, ['flight_datetime_from', 'flight_datetime_to', 'sort', 'limit']); const cleaned = cleanParams(params); const result = await fr24Client.getFlightSummaryFull(cleaned); return { content: [{ type: 'text' as const, text: `Found ${result.length} flight summaries (full details):\n${JSON.stringify(result, null, 2)}` }] }; } catch (error) { return { content: [{ type: 'text' as const, text: `Error: ${error instanceof Error ? error.message : 'Unknown error'}` }], isError: true }; } }
- src/fr24-client.ts:94-96 (handler)Core API client method that executes the HTTP request to FR24's /flight-summary/full endpoint using the generic makeRequest helper.async getFlightSummaryFull(params: Record<string, any>): Promise<FlightSummaryFull[]> { return this.makeRequest<FlightSummaryFull[]>('/flight-summary/full', params); }
- src/server.ts:61-74 (schema)Zod input schema defining parameters for the get_flight_summary_full tool, including required date ranges and optional filters.const flightSummaryToolParamsSchema = z.object({ flight_datetime_from: z.string().min(1).describe('Start datetime (YYYY-MM-DDTHH:MM:SSZ). Requires flight_datetime_to. Cannot be used with flight_ids.'), flight_datetime_to: z.string().min(1).describe('End datetime (YYYY-MM-DDTHH:MM:SSZ). Requires flight_datetime_from. Cannot be used with flight_ids.'), flights: z.string().min(1).optional().describe('Flight numbers (comma-separated values, max 15).'), callsigns: z.string().min(1).optional().describe('Flight callsigns (comma-separated values, max 15).'), registrations: z.string().min(1).optional().describe('Aircraft registration numbers (comma-separated values, max 15).'), painted_as: z.string().min(1).optional().describe("Aircraft painted in an airline's livery (ICAO code, comma-separated, max 15)."), operating_as: z.string().min(1).optional().describe("Aircraft operating under an airline's call sign (ICAO code, comma-separated, max 15)."), airports: z.string().min(1).optional().describe('Airports (IATA/ICAO/ISO 3166-1 alpha-2) or countries. Use format: [direction:]<code>.'), routes: z.string().min(1).optional().describe('Flights between airports/countries (e.g., SE-US, ESSA-JFK). Max 15.'), aircraft: z.string().min(1).optional().describe('Aircraft ICAO type codes (comma-separated, max 15).'), sort: z.enum(['asc', 'desc']).optional().describe('Sorting order by first_seen (default: asc).'), limit: z.number().optional().describe('Limit of results. Recommended, unless needed. Max 20000.') });
- src/server.ts:282-307 (registration)Registration of the 'get_flight_summary_full' tool on the MCP server, including name, description, input schema, and handler function.server.tool( 'get_flight_summary_full', 'Returns comprehensive timings and locations of aircraft takeoffs and landings, including detailed flight, aircraft, and operator information. Both real-time and extensive historical data are available. Data is available starting from 2024-04-07 and will be extended further in the near future. IMPORTANT: flight_datetime_from and flight_datetime_to are required, and at least one additional search parameter (other than sort and limit) should be provided.', flightSummaryToolParamsSchema.shape, async (params: z.infer<typeof flightSummaryToolParamsSchema>) => { try { validateHasRequiredParams(params, ['flight_datetime_from', 'flight_datetime_to', 'sort', 'limit']); const cleaned = cleanParams(params); const result = await fr24Client.getFlightSummaryFull(cleaned); return { content: [{ type: 'text' as const, text: `Found ${result.length} flight summaries (full details):\n${JSON.stringify(result, null, 2)}` }] }; } catch (error) { return { content: [{ type: 'text' as const, text: `Error: ${error instanceof Error ? error.message : 'Unknown error'}` }], isError: true }; } } );
- src/server.ts:7-14 (helper)Helper function to remove null, undefined, and empty string properties from parameters before API calls.function cleanParams<T extends Record<string, any>>(params: T): Partial<T> { const cleaned: Partial<T> = {}; for (const key in params) { if (params[key] !== null && params[key] !== undefined && params[key] !== '') { cleaned[key] = params[key]; } } return cleaned;