Onward Flights
Server Details
Search real flights and buy an onward ticket (proof of onward travel), paid in USDC over MPP
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: find_airports resolves IATA codes, search_flights discovers bookable flights with ids/prices, and buy_ticket handles payment and issuance. There is no overlap, and the descriptions explicitly cross-reference the workflow between them.
All three tools follow a strict verb_noun pattern (find_airports, search_flights, buy_ticket) with consistent snake_case formatting.
Three tools is lean but sensible for a narrow service that only needs lookup, search, and purchase. It is slightly thin, since there is no tool for post-purchase status or retrieval, but nothing is redundant.
The core lifecycle (resolve airport -> search flights -> buy ticket) is fully covered, including both x402 and MPP payment paths. Minor gaps exist: no round-trip search, no cancellation/refund, and no way to re-fetch an existing ticket.
Available Tools
3 toolsbuy_ticketBuy onward ticketAIdempotentInspect
Buy the ticket for a flight from search_flights, paid in USDC. Call it first without payment to get the price, wallet address and MPP challenges. After sending the USDC, call it again with tx_hash and chain (or an MPP credential in _meta "org.paymentauth/credential"). x402 clients can instead sign one of the offers in error.data.x402 and retry with the PaymentPayload in _meta "x402/payment", with no gas needed. Returns the ticket link and PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the USDC was sent on, defaults to base | |
| No | Optional, also emails the ticket here | ||
| tx_hash | No | Hash of the USDC transfer that paid for it | |
| last_name | Yes | Passenger's last name, as on their passport | |
| ticket_id | Yes | The flight id from search_flights | |
| first_name | Yes | Passenger's first name, as on their passport |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only the generic safety profile (readOnly=false, idempotent=true, destructive=false, openWorld=true), but the description adds the non-obvious two-phase call protocol, the two accepted payment mechanisms, the fact that no gas is needed for x402, the location of payment offers in error.data.x402, and the return contents. None of this is derivable from the structured fields and nothing contradicts the 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 call sequence is front-loaded in the first sentence and each subsequent sentence carries distinct information about a different payment path. It is dense and slightly run-on when listing the x402 fallback, but no sentence is filler given the complexity of the protocol being described.
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 paid, open-world purchase tool with no output schema, the description supplies the prerequisites, both payment flows, the retry inputs, and the return shape ('the ticket link and PDF'). An agent has everything needed to drive the two-call interaction without guessing.
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 the six parameters are already documented and the baseline would be 3. The description earns above baseline by explaining the role of tx_hash (proof of the USDC transfer) and chain (default base) within the payment flow, and by documenting the _meta 'org.paymentauth/credential' and 'x402/payment' payloads that are not represented in the schema at all.
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 ('Buy the ticket for a flight from search_flights, paid in USDC') and ties the input directly to the sibling tool that produces it. An agent can distinguish this from search_flights and find_airports without opening any schema, since the payment and purchase semantics are unique to this 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?
Gives explicit sequencing ('Call it first without payment to get the price... After sending the USDC, call it again with tx_hash and chain') and names an alternative payment path for x402 clients with the exact retry mechanics. Both when-to-use and the alternate route are spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_airportsFind airportsARead-onlyInspect
Look up 3 letter IATA airport codes by city, airport or country name.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | City, airport, country or code, e.g. "Bangkok" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that results are 3-letter IATA codes, but says nothing about how ambiguous matches (multiple airports per city) are handled or how results are returned; with annotations doing the heavy lifting, this is adequate but thin.
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; every clause (verb, output type, lookup keys) 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?
For a one-parameter lookup with no output schema, the description should say what comes back and whether multiple matches are possible. It hints at the return type (IATA codes) but omits result shape and ambiguity handling, leaving a modest 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% for the single parameter, and the schema actually documents more accepted inputs ("City, airport, country or code") than the description, which omits code input. Baseline 3 applies since the schema carries the parameter semantics.
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 ("Look up") and resource ("3 letter IATA airport codes") with the lookup keys enumerated. It is clearly distinct in function from the siblings buy_ticket and search_flights, though it never names or contrasts 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 a reference lookup that feeds into search_flights, but the description gives no explicit when-to-use condition, prerequisites, or statement of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_flightsSearch onward flightsARead-onlyInspect
Find one-way flights to use as an onward ticket. Returns up to 10 flights, each with an id to buy and its price in USD.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Departure date, YYYY-MM-DD, within 9 months. Defaults to 14 days from now. | |
| origin | Yes | IATA code of the airport leaving the country the traveller is entering, e.g. "BKK" | |
| destination | Yes | IATA code of where the onward flight goes, e.g. "SIN" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context by stating the result shape ('up to 10 flights, each with an id to buy and its price in USD'), which matters because no output schema exists. It omits any rate-limit, auth, or data-freshness notes.
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 tight sentences with zero filler; the core purpose and the result shape are both front-loaded. 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?
With no output schema, the description ably covers the return contract (cap of 10, id, USD price) and the schema carries all three parameters. Annotations cover read-only/open-world. The only real gaps are the absence of an explicit alternative (buy_ticket) and any operational caveats.
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 origin, destination, and the date default/format thoroughly. The description adds no syntax or format detail beyond the schema, 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 and resource ('Find one-way flights') plus the intended use case ('as an onward ticket'), which is far more informative than a tautology. It implicitly separates from buy_ticket (purchase) and find_airports (lookup), though it never names those siblings to make the routing explicit.
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 'to use as an onward ticket' implies the scenario in which this tool is appropriate, giving the agent useful context. However, there is no explicit when-not guidance, no prerequisites, and no named alternative for cases where the agent wants to purchase rather than search.
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.
3 tool updates
- First observed
buy_ticket - First observed
find_airports - First observed
search_flights
Related MCP Connectors
Search ~300 airlines and book flights with a checkout link. OAuth sign-in by email code.
Aggregated travel MCP — flights, tours, activities, price checks, visas, and more.
Search and book live flights and hotels. No API key; the traveller confirms on their phone.
Live flight prices and working booking links for AI agents and travel apps.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides live flight prices, booking links, and airport lookup via a hosted MCP server. Enables search for flights and direct booking URL retrieval.2MIT
- FlicenseNot gradedqualityCmaintenanceSearch flights, compare prices, check visas, look up airports, get travel advisories through a single endpoint.-
- 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
- AlicenseNot gradedqualityCmaintenanceFlexible multi-leg, multi-airport flight search that finds the cheapest route across an entire itinerary — available as a CLI and as an MCP server for AI agents.17 PyPIApache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.