Fare Deals
Server Details
Cheap flights from any city, to one place or anywhere, with the cheapest days to fly.
- Status
- Healthy
- Uptime
- 100.0% over 32 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- GoodTurnStudio/goodturn-mcp
- GitHub Stars
- 0
- Server Listing
- goodturn-mcp
TDQS
Scored across 3 tools
cheapest_dates and find_deals both revolve around finding cheap fares, and their descriptions share nearly identical boilerplate text, making the boundary between 'cheapest days for a route in a month' and 'cheapest recent fares from a city' somewhat blurry. look_up_place is distinct as a lookup/code-resolution tool. Overlap is manageable but not clean.
The set mixes an adjective_noun pattern (cheapest_dates) with verb_noun patterns (find_deals, look_up_place). Each name is readable and reasonably descriptive, but there is no single predictable convention across the three tools.
Three tools is on the thin side for a flight-deal domain. The surface covers basic discovery cases but feels minimal; one or two more operations would make the set feel properly scoped rather than borderline.
The tools cover deal discovery, cheapest-date exploration, and place-code resolution, but there are no operations for concrete route pricing, trip planning (round-trip/date ranges), or saving/comparing itineraries. Notable gaps exist, though the core 'find cheap fares' workflow is partially covered.
Available Tools
3 toolscheapest_datesCheapest departure days for a route in a monthARead-onlyIdempotentInspect
Cheapest departure days for a route in a month. Cheap flights from any city, to one place or anywhere, with the cheapest days to fly. Fares are the cheapest Aviasales travellers found in the last 48 hours. The live price is on the booking page.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Add a state or country when a name is shared, for example Portland, Maine. | |
| from | Yes | Add a state or country when a name is shared, for example Portland, Maine. | |
| month | Yes | 2026-11. | |
| country | No | Two-letter country for the currency, for example US, GB, CA, AU, DE. Leave out to use the traveller's location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value beyond that: fares are the cheapest Aviasales travellers found in the last 48 hours (a cached aggregate, not live) and the live price lives on the booking page. That freshness caveat is exactly the kind of context an agent needs before quoting a price.
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?
Four short sentences, front-loaded with the core purpose. There is mild redundancy: the title-style first sentence is partly restated by the phrase 'with the cheapest days to fly', which adds no new information. Otherwise it is efficient and readable.
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?
There is no output schema, so the description carries the burden of describing what comes back. It says 'cheapest days to fly' but does not explain the shape of the result (a per-date price list, cheapest-date summary, etc.), which is a gap for a price-lookup tool. The freshness/pricing disclosure partially compensates.
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 coverage is 100%, so all four parameters (from, to, month, country) are already documented in the schema with examples. The description only loosely gestures at flexibility of origin and destination and adds no format or constraint detail beyond it. Baseline 3 applies when the schema does the heavy lifting.
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 resource and output: cheapest departure days for a route within a month, with flexible origin/destination. It is distinguishable from find_deals and look_up_place by implying a per-day price calendar rather than a deals list or place lookup. It stops short of naming those siblings explicitly, so an agent must infer the boundary.
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 this is useful (flexible 'from any city, to one place or anywhere' route search within a month), which signals a browsing/price-calendar use case. However, it gives no explicit when-to-use guidance or exclusions relative to find_deals, so the agent must infer the choice on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_dealsCheapest recent fares from a city, to a place or anywhereCRead-onlyIdempotentInspect
Cheapest recent fares from a city, to a place or anywhere. The say field is a ready-made answer.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | City or airport, or anywhere (default). Same state or country hints as from. | |
| from | Yes | City or airport, for example New York or JFK. Add a state or country when a name is shared: Birmingham, UK; Birmingham, AL; Portland, Maine. | |
| limit | No | How many deals to return, 1 to 20. | |
| month | No | Departure month 2026-11 or date 2026-11-14. | |
| return | No | Return month or date. | |
| country | No | Two-letter country for the currency, for example US, GB, CA, AU, DE. Leave out to use the traveller's location. | |
| nonstop | No | True for direct flights only. | |
| one_way | No | True for one-way fares only. | |
| max_price | No | Budget in US dollars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only 'The say field is a ready-made answer,' which references an output field that appears nowhere in the schema and cannot be verified (no output schema exists). No mention of data freshness, rate limits, or result caching.
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?
The text is short and front-loads the core purpose, which is good. However, the second sentence refers to a 'say field' that has no grounding in the schema, so it does not clearly earn its place and leaves the reader confused rather than informed.
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?
This is a nine-parameter, open-world search tool with no output schema, so the description carries the burden of explaining the returned deals. Instead it gives no guidance on result shape, result count semantics, or data recency, and the single output-related sentence is opaque.
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 all nine parameters are already documented with examples (city/airport, state/country hints, month formats, limits). The description adds no parameter-level meaning beyond what the schema provides, making the baseline 3 correct.
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?
The description names a specific verb and resource (find cheapest fares from a city to anywhere), but it is a near-verbatim restatement of the title and offers no differentiation from the sibling cheapest_dates. An agent cannot tell from the text alone how this differs from the cheapest_dates tool.
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 when-to-use guidance, no mention of alternatives such as cheapest_dates or look_up_place, and no stated preconditions. The agent must infer usage entirely from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
look_up_placeLook up a city or airport codeCRead-onlyIdempotentInspect
Look up a city or airport code. Cheap flights from any city, to one place or anywhere, with the cheapest days to fly. Fares are the cheapest Aviasales travellers found in the last 48 hours. The live price is on the booking page.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | A city or airport name or code, for example Lisbon or LIS. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful freshness detail ('Fares are the cheapest Aviasales travellers found in the last 48 hours; the live price is on the booking page'), but that concerns pricing rather than this lookup's behavior, and nothing is said about uniqueness of matches or result ordering.
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?
The lookup purpose is correctly front-loaded in the first sentence, but two of the three sentences are about fares and booking pages, which do not earn their place in a place-lookup definition and actively dilute the signal.
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?
For a single-parameter resolver with no output schema, the description should say what comes back (a place identifier/code and its metadata) and how it feeds the sibling tools; instead it spends its remaining budget on pricing minutiae, leaving the agent unsure what to do with the result.
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% for the single parameter 'q', including examples ('Lisbon or LIS'), so the schema carries the semantic load. The description adds no extra meaning about accepted input formats, ambiguity handling, or whether codes vs names behave differently, 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?
The opening sentence gives a clear verb+resource ('Look up a city or airport code'), but the remaining sentences describe fare search behavior ('Cheap flights from any city', 'cheapest days to fly'), which does not match a resolver-style lookup tool and risks making the agent expect price results from this call. The purpose is stated but immediately muddied, and no differentiation from cheapest_dates or find_deals is offered.
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 call this tool, no prerequisites, and no reference to the sibling tools cheapest_dates or find_deals that presumably consume the resolved code. The only implicit guidance is the sentence about fares, which points at the wrong usage.
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.
2 tool updates
- Changed
cheapest_dates1 field changed- changed
Input schema / properties / month / descriptionPrevious value: -"2026-11"New value: +"2026-11."
- Changed
find_deals3 fields changed- changed
Input schema / properties / max_price / descriptionPrevious value: -"Budget in US dollars"New value: +"Budget in US dollars." - changed
Input schema / properties / month / descriptionPrevious value: -"Departure month 2026-11 or date 2026-11-14"New value: +"Departure month 2026-11 or date 2026-11-14." - changed
Input schema / properties / return / descriptionPrevious value: -"Return month or date"New value: +"Return month or date."
3 tool updates
- First observed
cheapest_dates - First observed
find_deals - First observed
look_up_place
Related MCP Connectors
Search flights by flexible dates and broad destinations, with live prices and booking links.
Google Flights prices for any route and date: round trips, cabins, stops, airlines, cheapest dates.
Flight search, airfare analytics, flexible destinations
Cheap flights in Europe and multi-city trip plans from cached airline prices, with shareable links.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceEnables finding the cheapest flight destinations from an airport as structured JSON, with bargain detection via typical price comparisons and booking links.-
- AlicenseNot gradedqualityCmaintenanceFlight search for AI agents: flexible-date cheapest round-trips with a good-price verdict from historical data. Hosted remote MCP, free, no key.3MIT
- AlicenseAqualityBmaintenanceEnables real-time flight fare searches across date ranges and multiple destinations, with historical price insights and booking links. Provides one-way and round-trip search tools through MCP.41MIT
- AlicenseAqualityBmaintenanceEnables users to find the cheapest dates to fly a route via Google Flights, supporting one-way and round-trip searches through multiple backends. It provides a tool that can search date ranges, filter by nonstop, seat, currency, and force a particular backend.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.