Travel hiccups, sorted inside your AI.
CozyTrip is an MCP server. It sits inside the AI assistant you already use and walks a sample trip through a disruption, a PayPal Sandbox payment, and a three-way split.
Sample travel data. Sandbox test money. Drafts are not sent. No flights are booked.
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. It does not rebook any of them.
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.
Split the pickup without paying the organizer again.
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.
Sandbox demo, not a real person-to-person transfer.
What actually runs
Connect
An MCP client calls
https://mcp.cozytrip.dev/mcpwith a bearer token. The page never holds that token.Read the sample, then the disruption
import_orderswith mode sample loads the fictional Seattle–San Francisco trip, 8–11 November 2026.detect_impactcan show a preview first. A second call, after confirmation, records the simulation. No airline is contacted.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.
Verify, then draft
verify_paymentreturns the three drafts only when the receipt hasverificationStatepassed andchargeOutcomecaptured. 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
The chat in the film is a replay. The cards are real CozyTrip cards. The trip is sample data. The PayPal step is Sandbox.
Public link: youtube.com/watch?v=15NOJoXXUUk · Music: Blue Skies by Silent Partner, YouTube Audio Library.
Connect your AI
Streamable HTTP. Send Authorization: Bearer, then a demo token. This page does not display tokens.
- 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. This site does not collect email.
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.
Documented path: remote MCP, a static bearer header, and MCP Apps.
- In the MCP config, set the URL to https://mcp.cozytrip.dev/mcp.
- Set Authorization to Bearer, then the token from an environment variable. Do not commit that token.
- Reload MCP. Start with: Use CozyTrip to organize my trip.
Works for the tool calls and the text results. Do not expect this page's card simulator to appear here.
- Run npx @modelcontextprotocol/inspector.
- Add the Streamable HTTP server https://mcp.cozytrip.dev/mcp.
- Set Authorization to Bearer, then the token.
- Call get_status before any other tool.
Custom connector. Request headers are a limited beta. If your account does not show that field, this path is not available.
- Add a custom connector with the MCP URL.
- Choose no sign-in.
- If Request headers is visible, add the header. The value must include the word Bearer. The product does not add it for you.
- If Request headers is not on the screen, stop. Use the documented editor path or MCP Inspector instead.
On the documented editor, the in-card PayPal control fell back to an external Sandbox link. Paying in that window does not deliver the drafts. Return to the chat and ask it to check the payment.
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?
No. Approved checkouts are PayPal Sandbox transactions. The test money is not a production payment.
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.
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.