Travel hiccups, sorted inside your AI.

Organize a sample trip, handle a disruption, and split a ride in your AI chat.

Your AI assistant
Demo · sample data

Boarding pass · SampleSA210

SEAtoSFO

Seattle · San Francisco

Passenger
Maya
Travelling with
Leo · Ava
Departs
Sample Air 210 SEA → SFO

Cancelled

The flight is one booking. The rest of the trip still has to be checked.

A cancellation moves the airport pickup. The hotel arrival may no longer match. Someone on the trip has often paid the driver already.

Those are four separate bookings in the sample: a flight, a hotel, a pickup, and a cruise. The total is USD 1,491.00.

CozyTrip keeps that list in the chat.

  1. FlightSample Air 210USD 645.00
  2. HotelSample Bay HotelUSD 540.00
  3. PickupSample Transfer CoUSD 180.00
  4. CruiseSample Bay CruiseUSD 126.00
Close-up of a suitcase lock.
Photo: Eminent Luggage, Pexels.

Sample Air 210 · SEA → SFOCancelled

See what the cancellation breaks. Then decide whether to pay for the drafts.

A preview comes first
The cancellation is a demo event, not a live airline feed. Nothing is recorded until the person confirms the simulation.
USD 9.90, shown before checkout
The price comes from the registered workflow. The model does not set it. No PayPal order exists until the person confirms.
Drafts after a verified capture
Three notes appear only after the receipt says the Sandbox capture passed. Each note is marked Draft. Not sent.
Recorded CozyTrip card: preview of a fictional flight cancellation. Sample data. Recorded CozyTrip card: the USD 9.90 after-sales quote. Sample data. Recorded CozyTrip card: payment verified and three drafts, each marked Draft. Not sent. Sample data.

Split the pickup without paying the organizer again.

Recorded CozyTrip card: all shares paid. Leo and Ava USD 60.00 each, Maya owes USD 0.00. Sample data.

In the sample, Maya prepaid the USD 180 airport pickup. Leo and Ava each owe USD 60. Maya owes USD 0.00 and has no payment button.

Each share is its own PayPal Sandbox order. The money goes to the CozyTrip Team sandbox merchant, not to Maya.

  • MayaUSD 0.00
  • LeoUSD 60.00
  • AvaUSD 60.00

What actually runs

  1. Connect

    An MCP client calls https://mcp.cozytrip.dev/mcp with a bearer token. The page never holds that token.

  2. Read the sample, then the disruption

    import_orders with mode sample loads the fictional Seattle–San Francisco trip, 8–11 November 2026. detect_impact can show a preview first. A second call, after confirmation, records the simulation. No airline is contacted.

  3. PayPal Sandbox, captured on the server

    After the person confirms USD 9.90, the hosted payment service creates a PayPal Orders v2 Sandbox order, captures it on the server, and accepts webhooks only after the signature check. Coming back to the chat is not proof of payment.

  4. Verify, then draft

    verify_payment returns the three drafts only when the receipt has verificationState passed and chargeOutcome captured. Workers AI writes the prose from the booking facts. If the prose fails the checks, a template is used. The person sends the drafts. CozyTrip does not.

AI assistant → CozyTrip on Cloudflare Workers → private payment service → PayPal Sandbox

Workers AI drafts the notes. D1 stores the trip ledger and the person’s own reports. Model: @cf/meta/llama-3.2-3b-instruct.

Watch the two-minute demo

Watch on YouTube · English captions (SRT)

Connect your AI

Streamable HTTP. Send Authorization: Bearer, then a demo token.

  • Judges: take a token from the repository README. It expires 2026-12-16 00:00 UTC.
  • Everyone else: open the GitHub repository and the Devpost page.

Documented path: remote MCP, a static bearer header, and MCP Apps.

  1. In the MCP config, set the URL to https://mcp.cozytrip.dev/mcp.
  2. Set Authorization to Bearer, then the token from an environment variable. Do not commit that token.
  3. Reload MCP. Start with: Use CozyTrip to organize my trip.

What this demo does not do

Does CozyTrip book the replacement flight?

No. The sample flight, hotel, pickup, and cruise stay sample data. Nothing is sent to those merchants.

Is the USD 9.90 a live charge?

Checkout uses PayPal Sandbox test money.

Who receives the split?

The CozyTrip Team sandbox merchant. Maya is not paid again. Maya owes USD 0.00 in the sample because the pickup was already prepaid there. The live MCP creates two Sandbox checkouts. Maya has none. This demo marks both sample shares paid together.

Are the drafts delivered to the airline?

No. They are marked Draft. Not sent. A later control only records that the person says they sent them. That record is not a merchant response.

Does the card know a payment succeeded because the browser came back?

No. The server checks the capture. A return page, a popup, or a clicked link is not a receipt.

What does Approve in Sandbox do?

It does not open PayPal. The live MCP sends that checkout to PayPal Sandbox and checks the capture on the server. This page only advances the sample.

Does this page send what I type?

No. Choose a suggestion. Nothing on this page is sent to a merchant.

Is the film a live session?

The chat in the film is a replay. The cards are real CozyTrip cards. The trip is sample data. The PayPal step is Sandbox.

Where does the buyer sign in?

A new Sandbox checkout needs a PayPal Sandbox Personal buyer. Judges can use the buyer noted in the Devpost private testing instructions, or their own Sandbox Personal account. The buyer login stays on PayPal’s page. On the documented editor, paying in an external Sandbox window does not deliver the drafts. Return to the chat and ask it to check the payment.

Start from the public project

The repository explains how to connect. This website does not take email addresses.