Nova
Uses Amazon Nova models on Amazon Bedrock (Converse API tool use, with Nova Lite/Micro fallbacks and per-turn fallback when throttled) to read pill-bottle labels and after-visit summaries from photos and to generate caregiver briefings, structured check-in extraction, grounded answers, and visit briefs.
Calls the Ring Partner API for the linked doorbell's status and event history and accepts Ring's signed webhooks in real time, so a doorbell press at the time of a scheduled visit confirms the home aide has arrived and triggers her visit checklist.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NovaDid Mom take her 6 PM Metformin yet?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Nova
Medication safety and care coordination for Alexa+
Nova catches medication mistakes before they happen and connects the signals a family would miss, for an older adult who lives alone and the people who care for her.
Live demo · Story page · Lite (no 3D) · Architecture · Submission notes

Contents
Related MCP server: CareCircle MCP Server
Overview
More than 53 million Americans are unpaid family caregivers (AARP, Caregiving in the U.S., 2020), many of them far from the person they look after. The risky moments are predictable: a new dose after a doctor's visit, an old bottle still in the cabinet, a missed evening pill. The early warning signs are small and scattered: "I felt a bit woozy getting up", an aide's blood pressure reading, a quiet morning. Nobody sees them together until something goes wrong.
Nova brings them together on the devices the household already uses. It connects three places on Alexa+:
Place | Device | Role |
The living room | Rose's Echo Show 8 | Reminders, pill checks, daily check-ins, consent |
The front door | Rose's Ring doorbell | Visits, deliveries, a quiet morning, a door opening at night |
The cloud | Maya's Echo Show 15, and Nova | Briefings, escalations, plan changes, the visit brief |
Nova is a self-hosted Model Context Protocol (MCP) server, the open standard Alexa+ uses for third-party experiences. This repository also includes a simulated Alexa+ (two Echo Shows and a Ring doorbell in the browser) whose agent runs on Amazon Nova in Amazon Bedrock, because Alexa+ developer preview access isn't generally available.
What Nova does
It speaks first. A care engine runs on the household clock and turns the care plan into announcements on the right device.
When | What happens |
6:00 PM, a dose is due | Rose's Echo: "It's 6 PM, Rose. Time for your Metformin with your meal." |
6:30 PM, not yet taken | A gentle follow-up on Rose's Echo |
7:30 PM, still not taken | Maya's Echo: "Mom hasn't taken her 6 PM Metformin. I reminded her at 6 PM and 6:30 PM." |
9:00 AM | The morning check-in: "How are you feeling today?" |
11:00 AM, a quiet home | No pills logged and no movement at the door: a wellness check, then an urgent alert to the family |
A bottle running low | A refill nudge, sent to the pharmacy with a pickup plan |
It sees. Rose holds a bottle up to the Echo Show camera. Amazon Nova reads the label and Nova checks it against her plan: the right pill at the right time, a pill already taken, an outdated strength, or a medicine her doctor said to avoid ("Please don't take ibuprofen, Rose…"). Nova says take it only when it is sure: the exact product (not a combination or extended-release version), the strength read and matching the plan, and a confident read. Otherwise it asks her to check with the pharmacist, and it refuses outright when it can't read the label. Maya photographs an after-visit summary, and Nova proposes the plan changes (change, start, stop, continue, with the doctor's reasons). Nothing changes until she approves.
It connects the dots, with evidence. "How's Mom doing?" gets a one-sentence answer and a card that fits one screen:
Dizziness began after her lisinopril change. Home BP averaged 152/91 before the change and 110/66 since. Rose has mentioned dizziness four times since Oct 15. Grace saw her unsteady. Dr. Patel's notes say to call about dizziness.
Insights come from deterministic, tested rules, and each one carries its evidence. Amazon Nova writes the words. Nova never diagnoses.
It reads the front door. Nova calls the Ring Partner API for the linked doorbell's status and event history, and takes Ring's signed webhooks in real time. A doorbell press at the time of a scheduled visit tells Nova the home aide has arrived, and she gets her visit checklist.
It stays respectful. Spoken replies are one or two sentences, with the details one "tell me more" away. Rose is asked before her family hears about a symptom, and she decides what the circle can see. Emergencies skip every question.
Rose is asked before her family is told, while Maya sees the evidence | A doctor-visit brief, one request away |
|
|
Architecture
flowchart LR
subgraph Browser["Simulated Alexa+ (browser)"]
R["Rose's Echo Show 8<br/>voice · camera"]
D["Ring doorbell"]
M["Maya's Echo Show 15"]
I["Inspector: live MCP trace"]
end
subgraph Sim["simulator/ (FastAPI)"]
A["Alexa+ agent<br/>Amazon Nova · Converse tool use"]
H["MCP Apps host"]
P["Announcement poller"]
V["Amazon Polly voice"]
end
subgraph Nova["nova_server/ (MCP server)"]
T["25 tools · 8 resources · 2 prompts<br/>5 MCP Apps views"]
E["Care engine<br/>(household clock)"]
X["Insight engine"]
S["Vision: pill check,<br/>reconciliation"]
G["Ring: API client + webhook"]
DB[("SQLite")]
end
R & M <-->|HTTP + SSE| Sim
A <-->|"Streamable HTTP · OAuth 2.1 token per person"| T
P <-->|resources/read| T
D -->|signed webhook| G
G <-->|Ring Partner API| RING["api.amazonvision.com"]
T --> X & S --> DB
E --> DB
G --> E
X -.->|language| BR["Amazon Bedrock<br/>Amazon Nova"]
S -.->|images| BR
A -.-> BRComponent | Description |
| The Alexa+ integration. An MCP server on the official Python SDK ( |
| A simulated Alexa+: two Echo Shows and a Ring doorbell. Each Echo has its own MCP session and per-person token, an agent loop on Amazon Nova, an MCP Apps host, live announcement delivery, and a protocol inspector. |
| The story page, with Three.js scenes. |
| Demo images (prescription bottles, an over-the-counter bottle, an after-visit summary) and their generator. |
| An Agent Skill that teaches agents how to run Nova conversations. |

Sequence diagrams for a voice turn, the escalation ladder, consent by elicitation, photo-to-plan reconciliation, account linking and the Ring integration are in docs/ARCHITECTURE.md.
Integrations
Alexa+ (Model Context Protocol)
Streamable HTTP, negotiating MCP 2026-07-28 and serving 2025-11-25 clients.
Account linking with OAuth 2.1: protected-resource metadata (RFC 9728), authorization-server metadata (RFC 8414), dynamic client registration (RFC 7591), PKCE, refresh-token rotation and revocation. Identity comes from the token, so the same tool answers differently for Rose and for Maya.
MCP Apps (
io.modelcontextprotocol/ui): fiveui://views (today, briefing, visit brief, pill check, reconciliation) render on the Echo Show screens and call tools back through the host. Camera-only tools are hidden from the model with_meta.ui.visibility: ["app"].Elicitation for consent, through SDK resolvers, and only when the client supports it.
Structured output with an
outputSchemaon every tool, a shortspeechline for voice andmorefor "tell me more".Resources as a delivery queue:
nova://announcementsis how Nova speaks first (proactive notifications on Alexa+).
Amazon Nova on Amazon Bedrock
Agent loop (
simulator/agent.py): tool use through the Bedrock Converse API (Amazon Nova 2 Lite by default, with region-aware inference profiles and Nova Lite and Micro as fallbacks). When a tool returns a ready-to-speak line, the agent speaks it without a second model call.Vision (
nova_server/vision.py): Amazon Nova reads pill-bottle labels and after-visit summaries. The reconciliation that follows is deterministic.Language (
nova_server/insights.py): the caregiver briefing, structured check-in extraction, answers grounded only in the care notes, and visit briefs.Resilience: a throttled or unavailable Bedrock falls back per turn (a local Ollama model, then a deterministic router) and is retried in the background, so Amazon Nova takes over again without a restart.
Status on our hackathon account: every Amazon Nova model still answers
ThrottlingException: Too many tokens per day, even after the daily reset, so the hosted demo and the video run on the offline router. The Bedrock path is in the code, its request shapes are tested against the botocore model, and it takes over by itself as soon as the quota allows (see the friction log).
Ring Partner API
API client (
nova_server/ring_api.py):GET /v1/users/me,/v1/devices,/v1/devices/{id}/status,/v1/devices/{id}/capabilitiesand/v1/history/devices/{id}/events?event_types=ding,motion.human, following thepage[key]cursor. Nova asks only for doorbell presses and people at the door, and stores no Ring email or address.Webhooks (
/integrations/ring/webhook): Webhook v1.1 events, with theX-SignatureHMAC-SHA256 verified over the raw body before parsing, deduplication bymeta.request_id, and an immediate200.In the live demo, Front door → Sync from Ring shows each Ring API call with its status, labelled Live or Recorded.
Amazon Polly
Generative voices speak every reply and announcement in the simulator, and narrate the demo video.
Getting started
Requirements: Python 3.12+, uv, and Chrome (for the microphone and camera). AWS credentials are optional.
git clone https://github.com/Dakshhhhh-ops/nova && cd nova
uv sync
cp .env.example .env
uv run python run.py # MCP server + simulator; opens the browserOr run the two processes separately:
uv run python -m nova_server # MCP server http://127.0.0.1:8765/mcp
uv run python -m simulator # simulator http://127.0.0.1:8080 (story at /, live demo at /live)A five-minute walkthrough
Open /live and press Reset.
Rose: Show Alexa → Ibuprofen. Nova reads the label and stops her, citing her doctor's notes.
Maya: "How's Mom doing?", then "Tell me more."
Front door → Grace arrives. The aide gets her checklist and the family is told.
Maya: Scan paperwork → after-visit summary → Approve. Then Rose shows the old lisinopril bottle.
Drag the sun to just before 6 PM and press Fast-forward to watch the reminder escalate to Maya.
Connect an MCP client
MCP Inspector:
npx @modelcontextprotocol/inspector, URLhttp://127.0.0.1:8765/mcp. Use its OAuth flow (Nova's account-linking page opens), or send the headerAuthorization: Bearer nova-demo-maya(alsonova-demo-rose,nova-demo-leoandnova-demo-grace).stdio clients:
uv run python -m nova_server --stdio --as rose.
Deploy
Render:
render.yamlis a one-click Blueprint.serve.pyserves the story page, the live demo and the MCP server on one port.Containers:
docker build -t nova ., then run withPORTandNOVA_PUBLIC_URL=https://your.host. Add AWS credentials or an instance role for Amazon Nova and Polly.
Configuration
All settings are environment variables (see .env.example).
Variable | Default | Purpose |
|
| Agent brain: |
|
| Region for Amazon Bedrock and Polly (standard AWS credential chain) |
| Pin a specific Amazon Nova model or inference profile | |
|
| How often an unavailable Bedrock is retried in the background |
| Ring Developer Playground token (about 30 minutes) | |
| Production Ring account linking | |
|
| Event-history backfill interval when Ring is linked |
| Key Ring signs webhooks with | |
| Public base URL (OAuth metadata and allowed hosts) | |
| Start the household clock at a given time, e.g. | |
|
| Demo-only routes ( |
|
| Simulator port |
MCP reference
Tools (25)
Tool | Who | What |
| both | Today's doses, appointments and unread messages |
| both | Log a dose by name, purpose or appearance, with a double-dose guard |
| both | "Did I take…?", "What's the pink pill for?" |
| Rose | Free-form check-in → structured signals, red flags, consent |
| both | Blood pressure by voice, checked against the doctor's limits |
| both | Upcoming visits, with who's driving and where |
| aide, family | What to do at Rose's today; sent to the aide when she arrives |
| both | Refill to the pharmacy with a pickup plan |
| both | Messages within the circle, delivered live |
| both | "What are my notifications?", "Remind me in 10 minutes" |
| both | Answers grounded in the doctors' notes, with sources |
| Rose | Alert the whole circle now |
| family | Status, adherence, trends, insights with evidence, alerts |
| both | Doctor-visit brief with questions to ask |
| family | Front door (Ring), doses and check-ins |
| Rose | Amazon Nova reads the bottle and Nova checks it |
| family | Amazon Nova reads the paperwork; reconciliation proposal |
| family | Approve or discard proposed plan changes |
| family | Open alerts; mark one handled |
| Rose | What the circle can see |
| both | Device screens acknowledge announcements |
Resources: nova://announcements, nova://circle, nova://timeline, and the five ui://nova/* views. Prompts: morning_checkin, caregiver_briefing.
Testing
uv run pytest -q81 tests run in CI on every push. They cover:
the care engine (the escalation ladder, snooze, check-ins and wellness checks);
pill checks, including the safety rules for unreadable labels, low-confidence reads, missing strengths and look-alike products, and reconciliation;
the dizziness insight and its evidence, BP limits, privacy, grounded answers and red flags;
a real Streamable HTTP session with bearer auth and elicitation, and the full OAuth 2.1 account-linking flow;
the Ring API client against recorded responses, and the Ring webhooks (signature, dedupe, event mapping);
Bedrock request shapes against the botocore model, and Amazon Nova recovering by itself after throttling;
the simulator's HTTP API end to end.
Security, privacy and compliance
No diagnosis. Answers about medications and symptoms come from the care team's own notes, with sources. Plan changes need a person's approval.
The older adult is in charge. Rose is asked before her family hears about a symptom, and only she can change what's shared.
Emergencies are never gated. Falls, chest pain, breathing trouble and stroke signs alert everyone and tell her to call 911.
Identity comes from the token, never from speech. Ring webhooks are verified before they're parsed.
Minimum necessary. Nova requests only the Ring events it needs, keeps spoken replies general, and puts details on screen or behind "tell me more".
Running Nova with real health data makes it a HIPAA project. The operator (a home-care agency, health plan or pharmacy) runs Nova in its own AWS account under a Business Associate Addendum and uses HIPAA-eligible services only: Amazon Bedrock, Amazon Polly, Amazon ECS and Amazon RDS encrypted with AWS KMS, with TLS on every hop and an access log. Unlinking an account revokes Nova's tokens. The demo household, people, pharmacy and clinic are fictional, and this repository is not a HIPAA deployment as it stands.
Project structure
nova/
├── nova_server/ MCP server: tools, OAuth, care engine, insights, vision, Ring
│ └── views/ MCP Apps views (ui://nova/*)
├── simulator/ Simulated Alexa+: agent loop, MCP Apps host, devices
│ └── static/ Live demo (/live) and story page (site/)
├── samples/ Demo images and fixtures
├── skills/nova-care/ Agent Skill
├── scripts/ Demo-video recorder, UI checks
├── tests/ pytest suite (81 tests)
├── docs/ Architecture, design, demo script, submission notes
├── serve.py Single-port server for deployment
└── run.py Local launcherRoadmap
Production account linking with Login with Amazon or Amazon Cognito, and deployment on Amazon Bedrock AgentCore Runtime.
Per-household Ring account linking and a registered webhook endpoint.
Alexa proactive notifications for announcements.
Amazon Nova Sonic for full-duplex voice, and ambient cards on Fire TV.
License
MIT. Built for the Amazon Developer Build, Ship, Shape hackathon. The open-source MCP Apps host used by the simulator is published separately as mcp-apps-lite-host.
This server cannot be deployed
Maintenance
Related MCP Connectors
Family calendars, tasks, reminders, and pickup coordination for your AI assistant.
AI life manager: tasks, home, health, wealth, childcare, pets & more — on your own data.
Consent-gated tools that turn user health notes into non-diagnostic appointment-prep materials.
The adaptive health-messaging engine for apps and agents. Federally-sourced. Not medical advice.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables eldercare coordination through medication reminders with safety guardrails, daily voice check-ins with symptom escalation, and a family caregiver dashboard.8MIT
- AlicenseNot gradedqualityBmaintenanceEnables older adults to log medication doses by voice, receive double-dose and safety alerts, record mood check-ins, request help, and exchange family messages, while giving caregivers multilingual AI digests, adherence reports, refill forecasts, and proactive notifications.MIT
- AlicenseNot gradedqualityBmaintenanceEnables voice-driven morning check-ins for older adults living alone through Alexa+, capturing sleep, mood and pain, logging medication doses and appointments, and answering medication questions from official FDA labels. Keeps family members informed with household status updates and automatic alerts when a check-in or dose is missed.1 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables older adults to manage their medicines by voice — adding prescriptions, hearing what is due, logging doses and symptoms, and getting refill and adherence reports — with built-in double-dose and emergency safeguards. It also keeps distant family informed through Bedrock-written daily summaries and SMS or email alerts for urgent events.MIT

