Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for Home Memory & Mechanic

Inspiration

I'm a Florida home inspector, in houses almost every day for insurers and homeowners. My 4-point and full inspection reports get read once, at closing or renewal, then forgotten. Yet they're the best record of a home's systems. So I put the inspector in the house.

What it does

Home Memory & Mechanic is an MCP server for Alexa+. It learns a house from photos of its data plates, remembers it, and helps keep it insurable and running.

  • Scan: scan_component reads a data-plate photo for brand, model, serial, capacity and refrigerant, each with a confidence score. It decodes the manufacture date and asks the year when it isn't sure. confirm_component saves it, and the owner's date always wins.
  • Home profile: every system's age against its expected life, plus consumables and what's due.
  • Insurability check: roof, electrical panel, wiring, plumbing, water heater and HVAC are each rated Ready, At risk, Likely problem, or Need info, with a fix list. Florida's 4-point is named only for Florida homes. This is not an inspection.
  • Triage: guided checks with photo steps for an AC not cooling, a dead outlet, or a chirping smoke alarm. Safety stops end the repair path and write a ticket.
  • Exact-fit consumables: filters and alarms, with a cart link only after a yes and never a checkout.
  • Maintenance calendar: seasons follow the home's hemisphere. Recall check against the US CPSC list.
  • Service tickets: drafted and sent only after an explicit yes.
  • Six MCP Apps cards: spoken answers stay short, and the cards carry the detail.

How we built it

  • Server: Python 3.12, uv, and the MCP Python SDK (mcp==2.3.0). Protocol 2025-11-25 over Streamable HTTP, with bearer-key auth.
  • Surface: 13 tools, 4 resources (home://profile, home://components/{id}, home://reports/insurability/latest, home://history), 3 prompts, and 6 MCP Apps cards rendered from ui:// resources. Tests assert all of these.
  • Photos: uploaded first, so the tools receive only an image key.
  • Simulator: our own web app styled like an Echo Show, with browser speech, a simulator backend and a Node front end. It is not Amazon's partner Web Simulator.
  • Assistant: a Claude tool-use loop when BEDROCK_MODEL_ID is set (Anthropic SDK on Bedrock). Otherwise an offline router and a scripted plate reader (DEMO_MODE).
  • Storage: locally, a JSON home store and a photo folder. AWS-ready: DynamoHomeStore and S3PhotoStore with presigned uploads, tested under moto, and a CDK stack that synthesizes the tables, bucket, KMS key and bearer secret. It isn't deployed.
  • Rules: shared with Vacant Home Watch through home-conditions-engine and the open-source home-conditions library.
  • Tests: 80 tests passing at the last review.

Challenges we ran into

  • Partner-only tools. The Alexa+ Category SDK, MCP Toolkit, CLI and Web Simulator read as available, then turn out to be partner-only (F-001). We built our own simulator.
  • Import exits the process. Importing mcp.cli calls sys.exit(1) when typer is missing (F-002).
  • Tools silently dropped. Tools registered after MCPServer is built are dropped with no warning (F-003).
  • Elicitation fails on stateless transport. It raises NoBackChannelError on the stateless transport even though the client advertises elicitation (F-004). We added a Confirm-tap or second-call fallback.
  • Bare 421. A non-localhost Host gets a bare HTTP 421 (F-005).
  • No container for AgentCore. AgentCore Runtime needs a container image, and Docker isn't installed. The hosting choice is still open.

Accomplishments that we're proud of

  • A full MCP server on the newest spec, with cards, elicitation-based consent, and memory across sessions. Restart the server and it still knows the house.
  • Hard safety lines: nothing opens a panel, touches gas or refrigerant, or mixes water and electricity. Nothing is bought or sent without a yes.
  • Shared rules: the same inspector rules engine runs in both of my entries.

What we learned

  • On a voice surface, short spoken answers plus cards beat long answers.
  • Consent has to work on every transport: elicitation where the client supports it, otherwise a Confirm tap or a spoken yes.
  • When a date is uncertain, asking beats guessing.

What's next

All planned in the repo:

  • a deployed MCP URL on AWS
  • Strands as the assistant, on AgentCore Runtime with AgentCore Memory
  • real Amazon product IDs, instead of spec searches
  • Polly and Transcribe voice
  • EventBridge maintenance nudges

Built With

Share this project:

Updates

Submission history