FlyScout flight deals
Server Details
Read-only cheap return flight deals from Luxembourg and 6 nearby airports, rescanned daily.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
get_deal is a by-id detail fetch, list_destinations aggregates cheapest prices per destination, and search_deals queries deals with filters — three distinct entry points. list_destinations and search_deals both surface deal prices, so an agent might pause over which to use for a plain 'show me deals' request, but the descriptions clarify the difference.
All three tools follow a clean verb_noun snake_case pattern: get_deal, list_destinations, search_deals. The verbs (get/list/search) accurately signal the interaction style and no conventions are mixed.
Three tools is lean but defensible for a read-only deal discovery service covering detail, browse, and search. It sits at the edge of feeling thin since there is no booking or calendar capability, but nothing here is redundant.
The surface covers the full read-only lifecycle: discover deals (search_deals), browse destinations (list_destinations), and retrieve a specific deal (get_deal), including expiry signaling via found=false. Gaps are minor — no date-range, price-filter, or airport-enumeration tool — and agents can work around them with the existing search.
Available Tools
3 toolsget_dealGet one flight dealARead-onlyIdempotentInspect
Get the current price of one deal by id. found=false means it is gone or expired.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Deal id from search_deals, e.g. 'LUX-BCN-vueling' |
Output Schema
| Name | Required | Description |
|---|---|---|
| deal | Yes | |
| found | Yes | False if the id is unknown, the deal expired, or it left the feed |
| feed_stale | Yes | |
| feed_last_checked | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context not present in the annotations: the found=false sentinel meaning the deal is gone or expired, which tells the agent to expect a soft-miss rather than an error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the miss case second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers the one non-obvious outcome (found=false). A brief note that the id comes from search_deals would close the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself documents the id format, pattern and example, so the description adds no parameter meaning. Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the current price of one deal by id'), and the singular 'one deal' implicitly separates it from the sibling search_deals. It does not explicitly name a sibling, so it falls just short of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this instead of search_deals or list_destinations, nor any prerequisite spelled out. The 'by id' phrasing only weakly implies you must already hold an id from a prior search, and the schema carries that hint rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_destinationsList deal destinationsBRead-onlyIdempotentInspect
List destinations that have current deals, with the cheapest price and departure airports.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Departure airport, or 'any' for all 7 | any |
Output Schema
| Name | Required | Description |
|---|---|---|
| feed_stale | Yes | |
| destinations | Yes | |
| feed_last_checked | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety bar is low. The description adds one useful semantic filter ('that have current deals') but says nothing about result count, ordering, or freshness of pricing beyond the cheapest-price mention.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though being one clause long it leaves supporting context (usage, scope) unstated rather than trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description need not explain return values, and it names the key returned fields anyway. What is missing is routing guidance against its two siblings and any sense of result size or pagination, which leaves the definition minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'origin' enum is fully documented there, including the 'any' default and the set of 7 airports. The description adds no syntax or behavior beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List destinations') with a meaningful qualifier ('that have current deals') and previews the returned fields. It reads clearly against get_deal and search_deals, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the browse/discovery entry point versus the siblings' deal-specific lookups, but the description never says when to prefer it over get_deal or search_deals, nor any exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dealsSearch flight dealsARead-onlyIdempotentInspect
Search current flight deals from Luxembourg (default) or nearby airports. Returns return-trip prices in EUR with dates, the usual route price, a booking link and when the price was last checked.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order | price |
| limit | No | Max number of deals to return (1-25) | |
| month | No | Outbound month, YYYY-MM. Matches the cheapest outbound date only. | |
| origin | No | Departure airport IATA code, or 'any' for all 7 | LUX |
| max_price | No | Max return price in EUR | |
| destination | No | Destination IATA code, city or country, e.g. 'BCN', 'Barcelona' or 'Spain' | |
| include_expired | No | Include deals whose outbound date has passed |
Output Schema
| Name | Required | Description |
|---|---|---|
| deals | Yes | |
| feed_stale | Yes | True if the daily scan is older than 36 hours |
| total_matches | Yes | |
| feed_last_checked | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds that results carry return-trip EUR prices, the usual route price, a booking link, and a last-checked freshness timestamp, but with an output schema already present this return-content detail is largely redundant, and no rate limits or freshness caveats beyond 'last checked' are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste: purpose and scope first, return-content summary second. Front-loaded and appropriately sized for a search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema handling return values, 100% schema coverage on all 7 params, and annotations covering safety, the description supplies enough to call the tool correctly. The only shortfall is the missing contrast with the two sibling tools, which an agent would need to resolve selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema including the origin default of LUX and the 'any' option. The description only echoes the Luxembourg default and adds no syntax or constraint meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (flight deals) plus scope: Luxembourg by default or nearby airports. This is clear and actionable, but it never names or contrasts with the siblings get_deal and list_destinations, so the agent must infer the boundary between searching vs fetching a single deal vs listing destinations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it by describing 'current flight deals' from a default origin, but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. Given get_deal and list_destinations sit alongside it, the absence of routing cues is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
search_deals1 field changed- added
Input schema / properties / limit / descriptionAdded value: +"Max number of deals to return (1-25)"
3 tool updates
- First observed
get_deal - First observed
list_destinations - First observed
search_deals
Publisher details
- Operator
- Not applicable
- Operator website
- Not applicable
- Vendor relationship
- First-party
- Documentation
- https://flyscout.lu/mcp/
- Trust center
- Not applicable
- Restrictions
- Not applicable
Related MCP Connectors
Cheap flights in Europe and multi-city trip plans from cached airline prices, with shareable links.
Flight search, airfare analytics, flexible destinations
Live Google Flights search: stopover itineraries, country sweeps, explore anywhere, booking links
Realtime package holiday and charter flight prices from Finland. Inventory not on Google Flights.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables finding the cheapest flight destinations from an airport as structured JSON, with bargain detection via typical price comparisons and booking links.-
- AlicenseAqualityDmaintenanceSearch flights using Google Flights data via SerpAPI, covering all airlines including low-cost carriers like Ryanair and easyJet.2MIT
- AlicenseNot gradedqualityBmaintenanceFlight search for AI agents: flexible-date cheapest round-trips with a good-price verdict from historical data. Hosted remote MCP, free, no key.3MIT
- AlicenseAqualityAmaintenanceUnofficial Python SDK and MCP server for Ryanair flight search. Find one-way fares, explore destinations grouped by country or region, and discover the cheapest day to fly between any two airports. No API keys.41MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.