← Index

Soar Flight Booking MCP

Soar books flights inside an agent. You ask Claude for a flight, it searches live fares, you approve the purchase, and it books and pays without handing you a link to go finish somewhere else. I worked on the MCP server behind that with Henry Langmack.

I am going to stay vague about the inside of it. It is someone else's production system and it moves real money. What follows is the shape, not the wiring.

The boundary

The MCP server is a thin layer. Agents talk to it, it talks to Soar's core, and everything that makes the business a business stays on the far side of that line.

Claude connector ChatGPT connector CLI agents one URL The MCP server OAuth, scoped tokens, tool schemas read · prepare · action internal, never public Soar's booking core private, and staying that way
A tool schema says what you can ask for and what comes back. Nothing about how.

That constraint turned out to be the useful one. Every question about a new tool became can this be answered at the interface, and most of the time it could. the sealed half is the product

What agentic actually means

The goal I was handed was booking with no human in the loop. That is not a thing yet, and designing as though it were would have bent everything else out of shape.

Claude and ChatGPT both require a person to confirm a purchase. Rails for fully autonomous payment do exist, but almost nobody has one installed. So the target moved. Not no human consent. No human friction. One tap at the end and nothing before it.

read resolve places no guessing airport codes search fares live, taxes in the total refresh the chosen offer prices move prepare prepare the booking what is still missing action book and pay a person taps approve
Each tool declares which band it sits in, which is how a client knows what it may run on its own.

The step I would have skipped is the third one. Fares move between the moment someone sees a price and the moment they approve it. If the number changed, the agent has to show both and ask again. Quietly booking the old number is the failure nobody forgives.

Adding to a live thing

My first piece of work was making Soar installable by any command-line agent from a single URL. The rule I set was that nothing in the running server could change. New files only, on its own branch, and the list of tools the server advertises had to come back byte for byte identical afterward.

That reads like caution. It was mostly leverage. Because the constraint was that strict, the whole change was reviewable in one sitting, and it shipped without needing a rollback plan.

What's live

Agents install from one URL and sign in with OAuth. Search, booking, payment, seats, bags, changes, cancellation and check-in all happen in the conversation. The approval tap stays, on purpose.