I Know The Pilot
Server Details
Find curated cheap flight and travel deals from Australia.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Each tool has a distinct purpose: find_cheapest_flights_to handles unknown origins, get_cheapest_flight_dates handles known origins and destinations, get_deal retrieves details for a specific deal, list_top_deals_from filters by airport, and search_deals does criteria-based searching. The descriptions explicitly cross-reference each other to prevent confusion.
All tools use a consistent snake_case with a verb-noun pattern (find_, get_, list_, search_). Although verbs vary (find, get, list, search), they align with the action each tool performs, and the pattern is uniform across the set.
With 5 tools, the server is tightly scoped to its purpose of flight deal discovery. Each tool addresses a distinct user need (unknown origin, known origin/date, deal details, airport-specific deals, criteria search), and there is no bloat or redundancy.
The toolset covers the primary workflows: finding cheapest flights, exploring deals by airport or criteria, and retrieving deal details. A minor gap is that there is no explicit tool to view all destinations from a given origin without a specific destination (though list_top_deals_from partially covers this), but the core discovery loop is complete.
Available Tools
5 toolsfind_cheapest_flights_toFind Cheapest Flights To DestinationARead-onlyInspect
When the user hasn't said where they're flying from, compare the cheapest fare to a destination from every origin airport with cached data. Prices are cached fares in AUD from I Want That Flight (I Know The Pilot's sister flight-search site) - refreshed regularly and indicative, not live availability. Always present the travel dates alongside prices. Use this for 'cheapest flights to Bali next month' queries; use get_cheapest_flight_dates when the origin is known.
| Name | Required | Description | Default |
|---|---|---|---|
| round_trip | No | True for return fares (default), false for one-way | |
| cabin_class | No | Cabin class | economy |
| destination | Yes | Destination airport code, city name, or country name (e.g. 'DPS', 'Bali', 'Japan') | |
| depart_date_to | Yes | End of the departure window (YYYY-MM-DD) | |
| depart_date_from | Yes | Start of the departure window (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | Number of results returned |
| origin | No | Origin airport code (present when an origin was specified) |
| message | No | Optional message about the results |
| results | No | |
| currency | No | Currency code (always AUD) |
| destination_airports | No | Airport codes the destination resolved to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral context: the data is cached, in AUD, indicative rather than live, and that travel dates must be presented alongside prices. This goes beyond what annotations could capture and is essential for correct agent behavior.
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 description is somewhat long but every sentence serves a purpose: condition, data nature, presentation requirement, and usage guidance. The key condition is front-loaded. It is slightly verbose with the sister-site detail ('I Know The Pilot's sister flight-search site'), but this is contextually useful and not wasteful.
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?
The description covers all essential aspects for correct invocation: the business scenario, data caveats, required output presentation, and the alternative tool. No critical information is missing. Since an output schema exists, return-value details do not need to be in the description.
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 already has an explanation. The description does not add additional meaning about parameter formats or constraints beyond what the schema provides. It mentions the destination and date window only implicitly, so it stays at the baseline for full schema coverage.
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 clearly states the action ('compare the cheapest fare'), the resource ('to a destination from every origin airport'), and the key condition ('when the user hasn't said where they're flying from'). It also differentiates from the sibling tool get_cheapest_flight_dates, so an agent can immediately tell them apart.
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?
It explicitly gives the condition for use ('when the user hasn't said where they're flying from') and names the alternative tool ('use get_cheapest_flight_dates when the origin is known'). This is direct, unambiguous guidance on when to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cheapest_flight_datesGet Cheapest Flight DatesARead-onlyInspect
For a known origin and destination, get the cheapest fare for each departure date in a date window. Prices are cached fares in AUD from I Want That Flight (I Know The Pilot's sister flight-search site) - refreshed regularly and indicative, not live availability. Always present the travel dates alongside prices. Use this for 'cheapest flights from Sydney to Bali in September' queries; use search_deals for curated editorial deals.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | 3-letter IATA origin airport code (e.g. 'SYD', 'MEL') | |
| round_trip | No | True for return fares (default), false for one-way | |
| cabin_class | No | Cabin class | economy |
| destination | Yes | Destination airport code, city name, or country name (e.g. 'DPS', 'Bali', 'Japan') | |
| depart_date_to | Yes | End of the departure window (YYYY-MM-DD) | |
| depart_date_from | Yes | Start of the departure window (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | Number of results returned |
| origin | No | Origin airport code (present when an origin was specified) |
| message | No | Optional message about the results |
| results | No | |
| currency | No | Currency code (always AUD) |
| destination_airports | No | Airport codes the destination resolved to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation: prices are 'cached fares in AUD' from a specific site, 'refreshed regularly and indicative, not live availability', and it instructs the agent to 'Always present the travel dates alongside prices'. These are non-obvious behavioral traits that the agent must know, and they do not contradict annotations.
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 description is concise: three meaningful sentences that front-load the core purpose, then add critical behavioral notes (pricing source, instruction to present dates), and end with usage guidance. No fluff or redundancy.
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 read-only query tool with an output schema (return values covered there) and annotations already confirming safety, the description covers all essential operational context: scope (known origin/destination), pricing source and currency, necessity to present dates, and when to use an alternative. Nothing critical is missing.
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 the baseline is 3. The description does not add parameter-specific semantics beyond what the schema already explains (e.g., origin codes, date window). It mentions the general purpose but does not enrich individual parameter meanings, so no credit beyond baseline is warranted.
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 clearly states the verb 'get' and the resource 'cheapest fare for each departure date in a date window', with explicit constraints ('For a known origin and destination'). It differentiates from the sibling tool search_deals by naming it directly, making the tool's function unambiguous.
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 provides an explicit usage rule: 'Use this for "cheapest flights from Sydney to Bali in September" queries; use search_deals for curated editorial deals.' This directly instructs when to choose this tool over an alternative, leaving no room for inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dealGet Deal DetailsBRead-onlyInspect
Get full details for a specific flight deal including routes and airlines.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The deal ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | URL to view and book the deal |
| title | No | Deal headline |
| routes | No | Flight routes available for this deal |
| deal_id | No | Unique deal identifier |
| summary | No | Brief description of the deal |
| airlines | No | Airline codes operating this deal |
| currency | No | Currency code (always AUD) |
| from_price | No | Starting price in AUD |
| expiry_date | No | Deal expiry date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, which covers the safety profile. However, the description adds no behavioral context beyond that: no mention of auth requirements, rate limits, or any constraints. It only states the output content (routes and airlines), which is return-value information rather than behavioral disclosure.
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 description is a single, front-loaded sentence that conveys the purpose and key output details without redundancy. Every word earns its place, making it concise and well-structured.
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?
Given the tool's low complexity (one parameter), good schema coverage, an output schema, and read-only annotations, the description is largely complete. It could have explicitly mentioned the deal_id requirement, but the schema covers that, so the overall context is adequate.
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?
The input schema fully documents the single deal_id parameter with 100% coverage. The description does not add information about the parameter, but the schema is sufficient. A baseline of 3 is appropriate because the description contributes no extra semantic value.
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 uses a specific verb ('Get') and identifies the resource ('specific flight deal') with useful detail ('full details including routes and airlines'). It is clear and distinct enough from sibling tools like list_top_deals_from and search_deals, though it does not explicitly mention retrieval by deal ID.
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 phrase 'specific flight deal' implies this tool is for retrieving one deal rather than listing or searching, but the description provides no explicit guidance on when to choose this tool over siblings. The intended usage is only implied, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_top_deals_fromList Top Deals From AirportARead-onlyInspect
List the cheapest currently active flight deals from a specific Australian airport. Great for answering 'what's cheap from Melbourne right now?'
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (1-20, default 5) | |
| origin | Yes | Australian airport code (e.g. 'MEL', 'SYD', 'BNE', 'PER', 'ADL') |
Output Schema
| Name | Required | Description |
|---|---|---|
| deals | No | |
| total | No | Number of deals returned |
| message | No | Optional message about the results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive, so the bar is lower. The description adds useful behavior context: results are limited to 'currently active' deals and sorted by 'cheapest', which goes beyond the annotations and helps the agent understand filtering and ordering behavior.
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 description is two sentences, with the first stating the core function and the second providing a practical example. No wasted words, information is front-loaded, and it earns every word.
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 full parameter coverage in schema, an output schema present, and annotations describing safety, the description fully covers purpose, use case, and behavioral nuances. The example cements the tool's role, making it complete for its complexity.
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 both parameters are already well-documented in the schema (origin as Australian airport code, limit with range and default). The description does not add additional parameter semantics, so the baseline of 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 description uses the specific verb 'List' and names the resource 'cheapest currently active flight deals from a specific Australian airport', clearly distinguishing it from siblings like get_deal (specific deal) and search_deals (broader search). The scope is unambiguous and actionable.
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 provides a clear use case with the example "what's cheap from Melbourne right now?", implying when to use this tool. It does not explicitly mention alternatives or exclusions, but the context is strong enough for an agent to select it appropriately.
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-onlyInspect
Search for currently active curated flight deals from Australia. Returns deals matching destination and/or price criteria. Deals are curated exceptional fares, not live inventory search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (1-20, default 5) | |
| max_price | No | Maximum price in AUD | |
| destination | No | Airport code, city name, or country name (e.g. 'DPS', 'Bali', 'Japan') |
Output Schema
| Name | Required | Description |
|---|---|---|
| deals | No | |
| total | No | Number of deals returned |
| message | No | Optional message about the results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and non-destructive. The description adds that deals are curated and not live inventory, plus the 'from Australia' scope, which sets expectations. This is comparable to baseline transparency, but does not go beyond the annotation-covered safety profile.
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 concise sentences, no redundant words, and the core purpose is front-loaded. Every sentence contributes meaning.
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?
The tool is simple: 3 optional parameters, an output schema exists, and annotations cover safety. The description adequately covers purpose, scope (Australia), nature (curated deals), and the non-live-inventory caveat, making it complete for the given complexity.
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?
The input schema has 100% coverage with descriptive parameter comments (limit range, max price in AUD, destination examples). The description's 'destination and/or price criteria' echoes existing schema info without adding new semantic detail, so the baseline of 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 description clearly states the action ('Search') and the resource ('curated flight deals from Australia'), and specifies it matches deals by destination and/or price. It does not explicitly contrast with sibling tools like get_deal or list_top_deals_from, but the verb 'search' differentiates it sufficiently.
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 provides clear context: it is for curated exceptional fares, not live inventory search, which tells the agent when to use it. It does not name alternatives like get_deal for specific deal details, so it stops short of full explicit guidance.
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. Dates show when Glama detected each change.
2 tool updates
- Added
find_cheapest_flights_to - Added
get_cheapest_flight_dates
3 tool updates
- Changed
get_deal1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "airlines": { + "description": "Airline codes operating this deal", + "items": { + "type": "string" + }, + "type": "array" + }, + "currency": { + "description": "Currency code (always AUD)", + "type": "string" + }, + "deal_id": { + "description": "Unique deal identifier", + "type": "integer" + }, + "expiry_date": { + "description": "Deal expiry date (YYYY-MM-DD)", + "type": "string" + }, + "from_price": { + "description": "Starting price in AUD", + "type": "integer" + }, + "routes": { + "description": "Flight routes available for this deal", + "items": { + "properties": { + "destination": { + "description": "Destination airport code", + "type": "string" + }, + "origin": { + "description": "Origin airport code", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "summary": { + "description": "Brief description of the deal", + "type": "string" + }, + "title": { + "description": "Deal headline", + "type": "string" + }, + "url": { + "description": "URL to view and book the deal", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_top_deals_from1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "deals": { + "items": { + "properties": { + "currency": { + "description": "Currency code (always AUD)", + "type": "string" + }, + "deal_id": { + "description": "Unique deal identifier", + "type": "integer" + }, + "expiry_date": { + "description": "Deal expiry date (YYYY-MM-DD)", + "type": "string" + }, + "from_price": { + "description": "Starting price in AUD", + "type": "integer" + }, + "summary": { + "description": "Brief description of the deal", + "type": "string" + }, + "title": { + "description": "Deal headline", + "type": "string" + }, + "url": { + "description": "URL to view and book the deal", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "Optional message about the results", + "type": "string" + }, + "total": { + "description": "Number of deals returned", + "type": "integer" + } + }, + "type": "object" +}
- Changed
search_deals1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "deals": { + "items": { + "properties": { + "currency": { + "description": "Currency code (always AUD)", + "type": "string" + }, + "deal_id": { + "description": "Unique deal identifier", + "type": "integer" + }, + "expiry_date": { + "description": "Deal expiry date (YYYY-MM-DD)", + "type": "string" + }, + "from_price": { + "description": "Starting price in AUD", + "type": "integer" + }, + "summary": { + "description": "Brief description of the deal", + "type": "string" + }, + "title": { + "description": "Deal headline", + "type": "string" + }, + "url": { + "description": "URL to view and book the deal", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "Optional message about the results", + "type": "string" + }, + "total": { + "description": "Number of deals returned", + "type": "integer" + } + }, + "type": "object" +}
3 tool updates
- First observed
get_deal - First observed
list_top_deals_from - First observed
search_deals
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Live flight deals plus points-vs-cash math: transfer partners, valuations, per-leg verdicts.
Live Google Flights search: stopover itineraries, country sweeps, explore anywhere, booking links
Search and book flights and hotels: hundreds of airlines, plus pay-later hotel rates.
Search Australian campsites, caravan parks and free camps; weather, gear, road trips and booking.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables finding the cheapest flight destinations from an airport as structured JSON, with bargain detection via typical price comparisons and booking links.-
- AlicenseNot gradedqualityAmaintenanceEnables 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.MIT
- AlicenseAqualityBmaintenanceTravel award search: compare cash vs points on hotels, flights & cars, cents-per-point, and book6348MIT
- FlicenseNot gradedqualityFmaintenanceSearch flights, compare prices, check visas, look up airports, get travel advisories through a single endpoint.-