Inspiration
Millions of homes now pay a different price for electricity every half hour: Octopus Agile in Britain, ComEd Hourly Pricing in Illinois, dynamic tariffs across Germany. In London today a unit costs 10p at one in the afternoon and 48p at six in the evening, and the grid is often half as dirty at night. The saving is real, but nobody reads a price table while loading the dishwasher. "When should I run it?" is a question you ask out loud, with your hands full, in the kitchen. That is exactly where Alexa lives.
What it does
- You ask Alexa when to run the dishwasher, the washing machine, the tumble dryer, the car charger or the immersion heater, with a deadline if you like ("done by seven") or a goal ("greenest, please").
- Lowtide reads the live half-hourly prices and carbon forecast for your postcode, prices every start that finishes in time, and answers twice: a sentence to say ("Run it at one in the morning and you'll save 16 pence") and an MCP App view for the Echo Show screen, the next 24 hours on a dial with the run marked on the rim.
- Say yes and it saves the run for the household, then counts what you've saved over time ("You've saved six pounds seventy-one, three pounds twenty-seven this week").
- "Is now a good time to put the tumble dryer on?" gets a straight answer and when it gets cheaper.
- It covers every British postcode on Octopus Agile (all 14 regions), northern Illinois on ComEd Hourly Pricing, and Germany on the EPEX day-ahead price, plus the National Energy System Operator's regional carbon forecast.
- The same server works in Claude, ChatGPT and VS Code: make a free household link (no account, no name) and add it as a connector.
How we built it
- MCP server: Next.js route handlers with
mcp-handler2 and the MCP TypeScript SDK v2, serving the 2026-07-28 spec natively with the 2025-era stateless Streamable HTTP fallback. Eight tools with voice-first results, server instructions, and one endpoint per household (/api/mcp/h/<id>) plus a guest endpoint. - MCP App view: one self-contained
ui://HTML resource built with esbuild and@modelcontextprotocol/ext-apps. It has two layouts: inline for chat hosts, and a fullscreen device layout sized from the screen so nothing scrolls on an Echo Show. - Alexa+ simulation on Amazon Bedrock: the Echo Show simulator is a real MCP host in the browser (MCP client +
AppBridgein an opaque-origin sandboxed iframe). Each turn goes to Claude Haiku 4.5 on Amazon Bedrock through the Converse API (Bedrock API key, cross-region inference profile), which picks a Lowtide tool; the browser runs it over MCP, renders the view and speaks the reply. Spend is capped per visitor and per day; if Bedrock is unavailable, a deterministic phrase router calls the same tools. - Planner: every half-hour start that fits is priced by spreading the load evenly over the slots it covers (partial slots included), with cheapest, greenest and balanced goals; negative prices count as a credit.
- Data: Octopus Agile rates by grid supply point, NESO regional carbon by region, ComEd day-ahead (parsed from Chicago wall-clock time), aWATTar for EPEX Germany. Households live in a private Vercel Blob, guarded with ETags.
- The website turns each day's prices into a studio-lit 3D object in three.js: 48 aluminium fins, height = price, cheapest quarter in cobalt. It renders on demand to stay smooth on integrated graphics.
- Proof: 20 unit tests (planner, time zones and DST, place resolution, the phrase router), a CI job that type-checks, builds and calls every MCP tool on the live server, and Playwright end-to-end runs of the Echo conversation on desktop and phone.
Challenges we ran into
- Alexa+ MCP integrations are in preview for brands only, so there was no way to see Lowtide inside a real Alexa+. We built the closest honest substitute: a real MCP host with a real model on Bedrock, rendering the real MCP App view on a device-sized screen.
- Designing for a voice device changes everything: answers must be one sentence, times said the way people say them, and the screen must be readable across a kitchen. Every tool now returns a spoken line first, and the view has a fullscreen device layout.
- The model needs the exact start time to schedule a run, but must never say "2026-10-05T00:00:00Z". Tool results carry it in a second line marked "don't read this aloud".
- Real-world data quirks: ComEd publishes Chicago wall-clock hours as UTC, Agile prices arrive each afternoon, and Vercel Blob ETags lag briefly after an overwrite.
Accomplishments that we're proud of
- A full voice conversation (plan → yes → saved → "is now a good time") running on Bedrock in about 1.4 seconds a turn, against live prices.
- One MCP App view that works both as a chat card and as a full device screen.
- Countertop, an open-source test bench any MCP author can use to try their server the way a smart display would.
What we learned
- MCP Apps are the natural shape for Alexa+ on screens: the server owns its own view, and every host renders it the same way.
- Voice-first tool design: the first line of every result should be something you'd be happy to hear spoken.
What's next
- Matter smart plugs and appliance APIs, so a confirmed plan can start the machine itself.
- More tariffs (Octopus Go and Intelligent, PG&E time-of-use, Tibber) and US carbon data.
- Proactive notices on the Echo when tonight's prices land ("tonight is unusually cheap, run the dryer").
Built With
- alexa-plus
- amazon-bedrock
- claude-haiku
- mcp
- mcp-apps
- model-context-protocol
- next.js
- octopus-energy-api
- streamable-http
- three.js
- typescript
- vercel
- vercel-blob
Log in or sign up for Devpost to join the conversation.