Inspiration

The night before a work trip, the flight was at 6:39 AM. At the airport with time to spare, or so it seemed: check-in closed at 6:24 AM, and it was missed by two minutes. Rebooking in a panic at the gate, the "6:30" flight turned out to be 6:30 PM. Non-refundable. The meeting was gone too.

Every app involved worked as designed. None of them knew what the day was for. GateCue does.

What it does

GateCue is an Alexa+ add-on (an MCP server with MCP Apps cards) for the day you travel to something that matters.

  • Plans backwards from the goal. "I need to be at an 11 AM meeting in San Francisco tomorrow" becomes leave home at 4:59 AM, check-in closes at 5:54 AM, with a real drive time in traffic from Amazon Location and your own buffer.
  • Speaks first. A background task watches check-in and the flight, and says "Check-in closes in 22 minutes and it's a 6-minute walk. Leave now." Delays, gate changes and cancellations are spoken and emailed.
  • Is panic-proof when you rebook. Ask for "the 6 o'clock" and GateCue puts 5:55 PM this evening next to the morning flights, shows it lands after your meeting, and asks before any money moves. A booking that misses the goal needs an explicit "yes, I'll miss my meeting".
  • Hands off the ride. Opens your ride app with home, the stop and the airport filled in, scheduled for the leave time. You pay there.
  • Remembers. Home, people you pick up, your buffer preference and your trips live in DynamoDB, so the next session already knows.

Every time GateCue says or shows carries AM or PM and the day. AM is tagged sunrise gold, PM dusk violet, in speech captions, cards and emails.

How we built it

  • MCP server: TypeScript, @modelcontextprotocol/sdk 1.30, protocol 2025-11-25 over Streamable HTTP. Ten tools, form and URL elicitation for confirmations and checkout, and an MCP Tasks background job (watch_trip).
  • MCP Apps cards (ext-apps 1.7.5): a timeline over a painted panorama, a departure-board carousel, a review card, a boarding pass, a ride card and a live countdown ring. Sized for Echo Show 8 and 15, phone and voice-only, inline and full screen.
  • Alexa+ simulator: our own MCP host, since the Alexa+ toolkit isn't open to entrants. It renders cards through AppBridge in sandboxed iframes, handles elicitations and Tasks, and has voice in and out.
  • AWS: Amazon Bedrock (Nova 2 Lite, Converse API) is the brain; DynamoDB is memory; Amazon Location Routes gives traffic-aware drive times; SES sends plan, booking and alert emails; Polly is Alexa's voice. A deploy script puts it on EC2 with HTTPS.
  • Guardrails in code, not only in the prompt: actions run only when asked for, a flight is paid for only after its review card was seen, a time without AM or PM forces a search around it, and the ride always goes to the airport.

Challenges we ran into

  • Bedrock was blocked on our new account for 25 days ("Operation not allowed" on every model). We built the brain switchable and shipped a scripted demo meanwhile; access came on Oct 19.
  • Once it worked, the small model chained actions nobody asked for: it opened a ride booking after a plan, and went to checkout on "the 6 o'clock" without showing which one. We moved the safety rules from the prompt into the host, each with a test.
  • Safari carried a parent element's CSS zoom into card iframes, which shrank every card and left a blank strip. We found it by rendering in WebKit and switched the device frame to a transform.

Accomplishments that we're proud of

  • The AM/PM check works the way it would have saved the real trip: the evening flight is never booked by accident.
  • 28 travel-day scenarios, an end-to-end MCP test and unit tests run on every change, plus checks against live AWS.
  • A full friction log (10 entries) from real use of the tools.

What we learned

  • For an assistant that spends money, the confirmation rules belong in code. Prompts are a hint, not a guarantee.
  • Voice-first design is mostly about time: every time needs its AM or PM and its day, said the same way everywhere.

What's next for GateCue

  • Time zones per airport, so trips beyond the West Coast and international ones work.
  • Real fares and booking through an airline or agency partner (no free public fare API exists).
  • Running inside Alexa+ itself once the add-on toolkit opens up.

Built With

Share this project:

Updates

Submission history