Inspiration
Recall notices are public, but they're spread over three US agencies: NHTSA for cars and car seats, CPSC for baby gear and home products, and FDA for food, formula, medicine and pet food. Nobody checks three websites every week for everything they own, so a recall of the crib or the baby formula often reaches a family late or never.
A voice assistant already sits in the kitchen. It is the right place to keep the list, do the checking, and speak up in one sentence when it matters.
What it does
You tell it once what your household owns: "Add my 2018 Honda Accord", "Add the baby formula, Nara Organics infant formula". Later you ask, "Alexa, is anything in my home recalled?" It checks every item against all three agencies in parallel and answers in a few spoken sentences.
Urgent recalls come first, with what to do about them: a CPSC "stop using it" notice, an FDA Class I recall, or an NHTSA "park it outside" notice. The next time you ask, it tells you only what's new since your last check, because each household has its own memory.
On a device with a screen, the same answer shows a recall card (an MCP App) with each recall, its fix and a link to the agency notice. A one-off question ("Is Advil ibuprofen recalled?") works without a list, and "add it" saves the item.
There are six tools: check_my_home, check_item, add_to_home, list_home, remove_from_home and forget_my_home (marked destructive, so the host confirms first).
How we built it
- A self-hosted MCP server on workerd (the open-source Cloudflare Workers runtime), MCP 2025-11-25 over Streamable HTTP, plus the stateless 2026-07-28 draft path.
- One SQLite Durable Object per household, named by a SHA-256 hash of a bearer household key, so the key itself is never stored. It keeps only the item list, the recalls already told, and the time of the last check.
- Progress notifications over SSE while a home check runs, so a voice host can say "checking" instead of going silent.
- Every result has a
speechfield written to the Alexa voice design guide: most important first, at most 3 things read aloud, plain words ("AIR BAGS:SENSOR:OCCUPANT CLASSIFICATION" is spoken as "air bags"), one clear next step. The full data is instructuredContentfor screens and agents. - An MCP App recall card (
text/html;profile=mcp-app) that follows the host theme and loads nothing from the network. - A voice simulator, because Alexa+ add-on tooling is for select partners only.
It's a web page that is a real MCP client (initialize, tools/list, resources/read, tools/call), with speech in and out and an Alexa-style intent model.
It also hosts the MCP App card over the
ui/*bridge. - The same server works in Claude Code with one
claude mcp addline, as the video shows. - 39 tests replay recorded agency answers, and an end-to-end script runs against the live agencies. We also gave 5 fresh AI agents only the endpoint and one plain task, and all 5 finished it (agent experience score 9.1 of 10).
Challenges we ran into
- Matching a household's words to agency data. CPSC matches a whole phrase as one substring, so we query the most distinctive word and keep only recalls whose title names every word.
- Writing for the ear. A home check can find 11 recalls, so the answer reads at most 3 and says the rest are on the screen. Our code review found that items past the spoken 3 were being marked as told. Now only what was read aloud counts as told.
- Claude Code connects on the 2026-07-28 path and refused our tool list until it carried
ttlMsandcacheScope. Testing the server in a second real host caught it.
Accomplishments that we're proud of
- The first answer in the video is the real answer from the live agencies, word for word. It leads with the sleeper linked to infant deaths and a Class I formula recall.
- "Nothing new since yesterday" is a real feature, not a script: each household remembers what it was told.
- It needs no API keys and no paid services, so it runs at 0 USD.
What we learned
- Voice answers need their own design pass. The data that's right for a screen is wrong for the ear.
- Testing an MCP server in two different hosts finds bugs that one host never shows.
What's next for Home Recall Watch
- Run it in Alexa+ once add-on tools open to more developers, with account linking instead of a household key.
- A weekly proactive check that speaks up only when something new and urgent appears.
- Serial and lot number checks where the agency publishes them.
What is new in the submission period (before and after)
Home Recall Watch builds on Recall Check, our earlier stateless MCP server (2026-10-01) with 5 lookup tools. You asked one question about one car, product or food, and got one agency's JSON back, with no memory, no voice answers and no screen.
Everything else was built inside the submission period: the household memory, the "new since last time" logic, the one-question check across 3 agencies with progress, the spoken answers, the MCP App card, the new MCP 2025-11-25 server and the voice simulator.
Product feedback and friction log
The repository README holds the product feedback and a friction log table (task, steps, expected, actual, severity, workaround, suggestion).
Try it
- MCP endpoint: https://recallwatch.openkrill.app/mcp
- Voice simulator: https://recallwatch.openkrill.app
- Demo video: https://vimeo.com/1236644421
- Code (MIT): https://github.com/openkrill-labs/home-recall-watch
Built With
- cpsc
- durable-objects
- mcp
- mcp-apps
- nhtsa
- openfda
- sqlite
- streamable-http
- typescript
- vitest
- web-speech-api
- workerd
Log in or sign up for Devpost to join the conversation.