
KeyFlight PNR Converter
io.keyflightPublished by keyflight.ioOfficial publisherv1.0.0Updated Oct 28, 2026
Decode Amadeus, Sabre, Galileo and Worldspan PNRs into itineraries, JSON and PRO ticket PDFs.
Overview
Hosted MCP server that decodes Amadeus, Sabre, Galileo and Worldspan PNRs into readable itineraries, JSON, and PRO ticket PDFs.
- What you can do
- Decode a raw GDS booking into a readable itinerary text and structured JSON with passengers, flights, airports, terminals, local times, duration and airline locators, choosing layout, time and date formats
- Generate a PRO ticket PDF from a PNR with optional passenger names, booking code, cabin class, price, currency and logo, returning a link to the PDF
- When to use it
- Useful for travel agents and agencies working with GDS bookings, or developers adding PNR decoding to a booking tool, CRM, chat bot or e-mail flow, who want an assistant to turn pasted booking text into an itinerary or a traveller-facing ticket PDF.
- Requirements
- Remote Streamable HTTP endpoint at keyflight.io/mcp, POST only, no local install. A paid KeyFlight subscription is required (no free tier) and an API key sent as the Authorization header in the form Bearer kfp_…; keys are created on the subscription page and shown once. Claude Desktop connects through mcp-remote, which needs Node.js.
Installation
In SourceWeft
- Open KeyFlight PNR Converter in the dashboard and add it to a workspace.
- Connect Authorization token credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.keyflight%2Fpnr/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"keyflight-pnr-converter": {
"type": "http",
"url": "https://keyflight.io/mcp",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}README
KeyFlight PNR Converter: MCP server and PNR API
Paste a raw booking from a GDS (Amadeus, Sabre, Galileo, Worldspan) into Claude, Cursor or another AI assistant and get a readable itinerary, the booking as JSON, or a PRO ticket PDF.
KeyFlight runs a hosted Model Context Protocol server at https://keyflight.io/mcp and an HTTP API at https://keyflight.io/api/v1/pnr/decode. Both use the same decoder as the free PNR converter on keyflight.io.
This repository holds the documentation and examples. The server itself is hosted by KeyFlight: there is nothing to install or run. Full reference: keyflight.io/pnr-api.
Who it is for: travel agents and agencies who work with GDS bookings, and developers who add PNR decoding to a booking tool, CRM, chat bot or e-mail flow.
- Get an API key
- Connect an AI assistant (MCP)
- MCP tools
- PNR API over HTTP
- Limits
- Errors
- Supported GDS formats
Get an API key
The MCP server and the PNR API take the same key, kfp_ followed by 43 letters, digits, - and _.
- Get the KeyFlight subscription (the subscription for travel agents).
- On the same page use "Already subscribed?", open the link we e-mail you and press "Create API key".
- Copy the key: it is shown once. A subscription can have 2 keys at a time; you revoke a key on the same page.
While the subscription is not active, the key answers 403 subscription_inactive. There is no free tier for the API or the MCP server. The PNR converter on the website is free for everyone, with no key.
Connect an AI assistant (MCP)
Claude Code
Cursor (.cursor/mcp.json)
Claude Desktop (claude_desktop_config.json, needs Node.js)
Claude Desktop connects through mcp-remote:
Cline (cline_mcp_settings.json)
In Cline open MCP Servers → Configure MCP Servers and add:
Step-by-step notes for AI agents that install the server: llms-install.md.
Then ask, for example: "Decode this PNR and make a PRO ticket with a price of 850 EUR" and paste the booking.
Other clients: any MCP client that supports Streamable HTTP and custom headers. Requests sent from web pages of other sites (with a browser Origin header) are refused with 403 origin_not_allowed, so connect from a desktop app, a CLI or your server. Without a client, see examples/mcp/raw-jsonrpc.sh: one JSON-RPC message per POST, JSON back.
MCP tools
decode_pnr: decode a PNR
Turns a raw PNR into a readable itinerary (text) and structured JSON: passengers, flights, airports, terminals, local times, flight duration, airline locators.
Returns the itinerary text, then JSON: and the same JSON as the PNR API answer. Clients that read structuredContent get that JSON there.
Each decode that finds flights counts towards the monthly decodes of the subscription, like an API call. A text without flights returns an error and does not count. When the decodes of the month are used up, the tool returns an error until the 1st (UTC).
make_ticket: make a PRO ticket PDF
Makes a PRO ticket PDF (PNR, airline logos, class, optional price) from a raw PNR and returns a link to the PDF. Included in the KeyFlight subscription.
The ticket is a document for the traveller: it is not an airline ticket and its PNR is not checked against airline systems.
Returns a line PRO ticket PDF: https://keyflight.io/tickets/….pdf with the PNR, the number of flights and the passengers, and as structuredContent:
Tickets do not count towards the monthly decodes; one key can make up to 30 tickets an hour.
Errors (no flights in the text, a flight without a date or time, no passenger names, a wrong pnr or option, more than 30 tickets in an hour) come back as tool results with isError: true, so the assistant can read them and fix the call.
PNR API over HTTP
POST https://keyflight.io/api/v1/pnr/decode with Content-Type: application/json and Authorization: Bearer kfp_…. The body is { "text": "…", "options": { … } }. The HTTP API returns data and the itinerary as text and HTML; PRO ticket PDFs come from the MCP tool make_ticket. The examples below send the Amadeus booking from examples/pnr-amadeus.txt.
curl
Node.js 18+
Python
examples/api/decode.py (needs requests):
Options
An unknown option or a wrong value answers 400 invalid_option with the field and the allowed values.
Response
The full answer to the example above: examples/api/response-example.json (itinerary.html shortened). Main fields:
itinerary.html of the example in the table view, with options.show.logo: false, as the free converter shows it:
Limits
Answers of the HTTP API carry X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset and X-Monthly-Limit, X-Monthly-Remaining, X-Monthly-Reset.
Errors
PNR API errors are JSON: { "error": "<code>", "message": "…" }.
Before a tool runs, the MCP server answers in the same JSON: 401 missing_api_key / invalid_api_key, 403 subscription_inactive, 429 too_many_requests and 503 service_unavailable; also 403 origin_not_allowed for requests from web pages of other sites and 405 method_not_allowed for anything but POST. Inside a tool, errors (the monthly limit too) are tool results with isError: true.
Supported GDS formats
Amadeus (1A), Sabre (1B/1S), Galileo (1G) and Worldspan (1P). Send the booking as the GDS shows it; you don't need to say which system it came from. Example bookings for each system: Amadeus, Sabre, Galileo, Worldspan.
Links
- API and MCP reference: keyflight.io/pnr-api
- Free PNR converter (no key): keyflight.io/tickets/pnr
- KeyFlight subscription for travel agents: keyflight.io/subscription
License
The examples and documentation in this repository are under the MIT License. The KeyFlight service is not open source; using it needs a KeyFlight subscription.
Source: README.md at commit f0ebd7c
Tools
0Version history
1- v1.0.0LatestOct 20, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts