pulse-flight-deals-mcp
v0.3.2
Published
MCP server that lets an AI agent judge whether a flight price is actually a deal, grounded in observed fare history. Answers 'is $X for this route a good price?' with real numbers an LLM cannot produce on its own.
Maintainers
Readme
pulse-flight-deals-mcp
An MCP server that lets an AI agent answer "is this flight price actually a good deal?" with real numbers instead of a guess.
Ask any LLM "is $450 to Helsinki a good deal?" and it guesses: it has no live fares and no price history. Google Flights has the data but shut down its public API in 2018, so no agent can call it. This server fills that gap. It judges a proposed fare against fares actually observed for the same route, trip shape, and travel period, and returns a grounded verdict:
Q: Is $450 JFK->HEL (Helsinki, Sep 7-16) a good deal?
Bare LLM (no tool):
"I don't have live fare data, but $450 sounds like it could be
reasonable... prices vary a lot by season. Check Google Flights."
With pulse-flight-deals-mcp:
GREAT $450 for JFK->HEL (Sep specific dates) is a great price.
Across 4 comparable observations we've seen this fare range
$450 to $680 (median $451).The LLM guessed. The tool answered with prices actually seen.
The tools
is_this_a_flight_deal — judge a price against observed history.
| arg | required | notes |
| --- | --- | --- |
| destination | yes | IATA code, e.g. HEL |
| price | yes | USD, e.g. 450 |
| origin | no | IATA code, e.g. JFK; omit for any origin |
| trip_type | no | round_trip or one_way; omit to match available history |
| dates | no | e.g. Sep 7-16 or Sep-Oct, to match a comparable period |
Returns a verdict (great / typical / high), the real price range and median it's based on, and how many comparable fares were observed. If there isn't enough comparable history yet, it says so rather than guessing. A fare is only ever compared against fares of the same route, trip type, and travel period, never a specific-dates fare against a broad "from" window.
top_flight_routes — which routes are being checked most, right now.
| arg | required | notes |
| --- | --- | --- |
| days | no | trailing window, default 30, max 90 |
| limit | no | max routes, default 10, max 25 |
Returns a ranked list of routes with their check counts. Aggregate demand only (how often each route is checked), not booking or search volume. Handy to see what's in demand, or to pick a popular route and then judge it with is_this_a_flight_deal.
Try it in 30 seconds
Paste this into Claude (Desktop or Code) after adding the server — it answers once from memory, once from the tool, so the difference is obvious:
Add the MCP server "pulse-flight-deals-mcp" to yourself (run:
npx -y pulse-flight-deals-mcp). Then, WITHOUT any tool, tell me from your own knowledge if $450 round-trip JFK→HEL in September is a good price (note you're guessing). Then callis_this_a_flight_dealfor destination HEL, origin JFK, price 450, trip_type round_trip, dates "September". Compare the two and tell me which to trust.
Add it to Claude
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"pulse-flight-deals": {
"command": "npx",
"args": ["-y", "pulse-flight-deals-mcp"]
}
}
}Claude Code:
claude mcp add pulse-flight-deals -- npx -y pulse-flight-deals-mcpThen ask Claude things like "is $450 round-trip JFK to Helsinki in September a good deal?" and it will call the tool.
How it works
This server holds no data and no credentials. It is a thin wrapper over a public read-only endpoint (GET /api/v1/pulse/judge) that runs the judgment. The fare history behind that endpoint is structured from public flight-deal newsletters and price alerts by Inbin; this server does not require or expose Inbin.
Point it at a different backend with PULSE_JUDGE_URL if you self-host the endpoint.
Honest limits
- It is not a live fare quote. The judgment is based on observed history; always verify the current price before booking.
- Coverage grows over time. A route is only judgeable once enough comparable fares have been observed; new or thin routes return "not enough history yet."
- Content integrity, not availability. The tool tells you whether a price is good for its route, it does not book or search.
Demo
PULSE_JUDGE_URL=https://api.inbin.dev/v1/pulse/judge node demo.mjsMIT licensed.
