Onward Flights

Search real flights and buy an onward ticket (proof of onward travel), paid in USDC over MPP

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
100%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~536Tokens (tool definitions)
~1.2 KBTypical response size
Minimal attention impact (0.42% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "onward-flights": {
      "url": "https://onward.flights/mcp"
    }
  }
}

Remote endpoints

https://onward.flights/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢find_airports(query)

Look up 3 letter IATA airport codes by city, airport or country name.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "City, airport, country or code, e.g. \"Bangkok\""
    }
  },
  "required": [
    "query"
  ]
}
🟢search_flights(origin, destination, date)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "origin": {
      "type": "string",
      "description": "IATA code of the airport leaving the country the traveller is entering, e.g. \"BKK\""
    },
    "destination": {
      "type": "string",
      "description": "IATA code of where the onward flight goes, e.g. \"SIN\""
    },
    "date": {
      "type": "string",
      "description": "Departure date, YYYY-MM-DD, within 9 months. Defaults to 14 days from now."
    }
  },
  "required": [
    "origin",
    "destination"
  ]
}
🟢buy_ticket(ticket_id, first_name, last_name, email, tx_hash, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "ticket_id": {
      "type": "string",
      "description": "The flight id from search_flights"
    },
    "first_name": {
      "type": "string",
      "description": "Passenger's first name, as on their passport"
    },
    "last_name": {
      "type": "string",
      "description": "Passenger's last name, as on their passport"
    },
    "email": {
      "type": "string",
      "description": "Optional, also emails the ticket here"
    },
    "tx_hash": {
      "type": "string",
      "description": "Hash of the USDC transfer that paid for it"
    },
    "chain": {
      "type": "string",
      "enum": [
        "base",
        "ethereum",
        "optimism",
        "polygon"
      ],
      "description": "Chain the USDC was sent on, defaults to base"
    }
  },
  "required": [
    "ticket_id",
    "first_name",
    "last_name"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools