Hawaii
watching“Two weeks in February, we're flexible, no redeyes, and I'd rather not connect twice.”
Say it. Stack it. Portage it.
Say the trip however it comes out — loose dates, no airport named, “I’d pay $80 to skip the redeye.” Portage prices every airport that can reach your door, everything included, wherever you are — and keeps a fraction of what booking sites take.
No forms. No storefront. Just a conversation.
Priced from your doorstep in London, Ontario
EXAMPLE — illustrative numbers, not live quotes. The connector prices for real.
Buffalo to Orlando
$938 CAD
You save $347 vs. Pearson
TOTAL$938 CAD
YOU SAVE
$347 CAD
vs. Pearson
We show everything that affects the total.
If we can't beat Pearson, you'll know.
Zero ads. Zero kickbacks. Zero bias.
We respect your time, money and sanity.
London, Los Angeles, Budapest — wherever you are.
One breath in. One decision at a time out.
Where, when, budget, and what you will not do.
Flights, drives, parking, tolls and more.
All costs. All fees. All real.
Side by side, your perks applied — a waived bag can flip the winner.
Flight, then wheels, then a bed — and a watch on it after.
We watch prices and alert you when it's the right time to book.
Learn more →EXAMPLE — the chart is illustrative. No prices have been watched.
We don't sell trips.
We carry your trip
across the right
place to start.
That's Portage.
Product updates, new features, and when we expand.
One address, one purpose: to be told when accounts open.
One saved trip, four layers
Save it once. Each layer knows what the layer above it decided — because which airport you fly into changes the car, and the car changes which hotel is actually cheap. Nothing else in travel joins those up, which is why you do it by hand on a Sunday.
Six airports inside your drive, priced from your driveway. The fare, the drive, the parking, the border, the exchange rate — one total.
Cars, ferries, transit, the ride from the airport. The airport concession recovery fee on a rental runs past 30% — the same defect as the fare: the headline price is not the price.
Resort fees, city taxes, the parking the hotel charges you to leave the car you already paid for. A solved problem with a hundred adequate products — which is exactly why it is not first.
Tickets, passes, the thing you came for. It is last because it is the only layer where being wrong costs an afternoon rather than the trip.
Saved, the stack keeps working while you do not. Change one layer and the ones below it re-price themselves — a cheaper airport two hours away is not cheaper if it adds a car and a night. That is the whole reason the layers are joined instead of listed.
Layer one is live. The other three are drawn as they will work, not as they work today — flights ship alone first. A product doing four things badly loses to four products each doing one well, and the pieces above have no advantage until the first one has earned it.
The primary interface
It is an MCP server — an open protocol, not somebody's plugin store. One server answers ChatGPT, Claude, and anything else that speaks it. You add it once and then you talk about your trip wherever you already have a tab open, and the numbers come from here rather than from the model. A model handed a vacuum invents a fare, and a fabricated fare is checkable in ten seconds.
In ChatGPT: Settings → Connectors → Add custom connector.
In Claude: Settings → Connectors → Add custom connector.
It sends you to a consent screen and back. Nothing to download, nothing to configure.
Where you leave from, what your car costs per kilometre, what an hour of your time is worth, and which airports you would actually drive to. In the conversation, one at a time, and never twice.
No forms after that, ever. Every fare, every drive, every total comes back from the server, itemised, with the date it was priced — and it remembers what you told it, so the fourth trip takes less saying than the first.
https://flyportage.com/mcp
The protocol works and OAuth 2.1 with PKCE is enforced — with no credentials configured the server returns 503 rather than running open. Fares are priced live on request and cached on a shared surface, each one stamped with when it was priced — and when nothing can be priced it says so rather than inventing. Public accounts do not exist yet. Today the server admits exactly one.
One server, several faces. The same twenty tools answer ChatGPT, the Claude connector, this site and the app after it. It is also why the arithmetic lives in exactly one place and this page is forbidden from computing a single number of its own — the build fails if anyone tries.
It does not replace the apps. It replaces the eight-tab afternoon. The airline's app still holds your boarding pass. What collapses is the deciding, and the deciding is where the hours go.
Portage remembers your driveway, what your car costs, what you hold, and what you will not do — so the fourth trip takes less saying than the first. That is what an account is for.
Already have an account? ·
Build your option
Say it to your assistant, or tune it here — same engine either way. Flights first, then wheels, then a bed.
Your saved starting places
Fares get priced from those airports right now. The drive, parking and border arithmetic needs a stored ring — tell your assistant where you are ("I'm starting from Chicago") and it builds one; until then those lines come back as ?, never guessed.
Road-trip pricing is not built yet — Portage prices flights and the drive to the plane. Say the trip to your assistant and it will help by hand, with numbers that are its own, not Portage's.
The big number is everything the server can price — fare, drive, parking where a rate exists — and the little lines are how it got there. A ? is a refusal, not a zero. Pick one.
Your ring, live — the badge is how many options each airport showed when it was priced. Estimates carry their priced-at date on the cards below.
Rental pricing is not built. The stage is here so the decision is — your choice is kept with the trip, and your assistant can price cars by hand with numbers that are its own.
Hotel pricing is not built. Name the area and it rides with the trip — near Broadway, downtown, by the airport — so the next conversation starts from it.
Or type it here
This page does no arithmetic. Not one line — the test harness reads this file and fails the build if it finds any. Every total, every delta, every hour arrived already computed from the server, because the connector and the site must never quote two different numbers for the same trip.
What your car costs per kilometre. Not the government rate — yours. It is what turns 330 kilometres into a figure that belongs on the same line as the fare instead of being ignored.
What an hour of your time is worth. Not your wage. What you would pay to not spend an hour driving. Say “I'd pay eighty bucks not to take a redeye” and that is a rate — and a rate is arithmetic, where a checkbox is nothing.
Nobody fills those into a form. They say them in passing. Conversation is the only interface that can take them.
Over several trips these accumulate into constraints you never restate — NEXUS, passport expiry, the school calendar, that you will not fly redeyes. Nobody has taken four trips through Portage yet. That compounding is the design, not a result.
There is no “flying from” box. Naming the airport is the mistake. And there is no single date — a date window is the second half of the answer.
These filter absolutely. “No layovers” means no layovers, and a cheaper one-stop is not offered anyway. A preference with a price on it re-ranks instead.
Your trips
A trip does not get decided in one sitting. You say it in the assistant, it lands here, and then you nudge it — a week later, from your phone, without saying the whole thing again. Name two versions of the same trip and put them side by side, which is the thing no booking site lets you do at all.
“Two weeks in February, we're flexible, no redeyes, and I'd rather not connect twice.”
“Same trip, but what if we take the redeye and go a week earlier?”
“Budapest in a week, evenings, one stop, under fourteen hours, about $1,250.”
| Hawaii | Hawaii 2 | difference | |
|---|---|---|---|
| Landed total | — | — | needs a fare source |
| Airport | — | — | — |
| Redeyes | excluded | allowed | rule changed |
| Departure window | Feb 1 – 28 | Jan 24 – Feb 21 | a week earlier |
| Hours door to door | — | — | shown apart from the money, always |
| What you hold | applied | applied | same on both — asked once |
Only the rules you changed are marked. Everything else is held identical on purpose: two trips priced on different assumptions are not a comparison, they are two answers.
Adjust anything
Hard rules filter the list. A price on a preference re-ranks it instead: say what avoiding a redeye is worth and it stops being a wish and becomes arithmetic.
From your door, not the city centre. These figures do real work in the answer.
Memberships, status, cards. Most people are sitting on discounts they have forgotten. Twenty-six categories, and it knows which of them stack and which compete for the same slot — only a few turn into arithmetic today, and the rest are read back as things to check rather than dollars we pretend to know.
Loading…
Split into the routing saving and the levers, without double counting, with hours beside dollars. It is a routing saving, never a discount — and it prints a loss exactly as plainly as a win.
Where this is · 15 August 2026
Most products publish the first column. This is the whole ledger, and it is here because a number you cannot check is worth nothing.
Every one of those is something this page could have implied and didn't. A page that will not tell you what is missing is not going to tell you when a fare is stale, either.