Inspiration

Integrates with Ring devices: Pickup Note uses the Ring Partner API (Ring Developer Playground), and its parent side is a self-hosted MCP server with MCP Apps cards for Alexa+.

New York lets a group family day care home release a child only to "his or her parent, person(s) currently designated in writing by such parent to receive the child, or other person authorized by law to take custody of a child" (18 NYCRR 416.8(o)(1); the same wording applies to registered family day care homes in 417.8(o)(1)). New York has 11,852 active registered family and licensed group family day care homes, with capacity for 166,963 children (NYS OCFS, data.ny.gov). Nationally there were 98,294 licensed family child care homes in 2024 across the 39 states with data (Child Care Aware of America). A same-day change can arrive as a text the provider must read while caring for children.

What it does

  • A parent says who's picking up; the assistant drafts a pickup note naming the adult in full.
  • One tap confirms it, as the parent's written designation for today only.
  • The stand-in gets a link that needs no app.
  • The door screen decides who is cleared for which child; a person checks photo ID and releases.
  • Allow once (a one-tap written designation for one pickup), cancel by voice, receipts, and a door log.

Why not just a text? Alexa+ can already message your own contacts and remind people in your household. It can't hand one pickup to your sister in another home and have the daycare's door check it. A text is words the provider has to read and remember. A pickup note is a confirmed designation that works once, ends at midnight, and can be cancelled from any screen.

Try it

Open https://pickup-note.cjagdeo08.workers.dev and click Start demo. There is no sign-in, and you get a private sandbox of fictional people. No Ring token needed: Replay mode runs the whole demo. Pasting your own Ring Playground token to see Ring live is optional; the steps are in the README.

How it uses Ring

  • Real Partner API calls on the Developer Playground: devices; a WHEP live view whose signaling our Worker brokers, so the token stays on the server and the media streams straight from Ring; and on_demand history linked to each pickup in the provider's door log.
  • Doorbell and car events come from our HMAC-signed feeder in Ring webhook v1.1 format, because the Playground sends no webhooks (forum 45309); the organizers approved this (forum 45511).
  • Ring content policy: the §1.2.2 access log inside the door log, and Disconnect Ring to withdraw consent (§4.1.1).

How it uses Alexa+

  • A self-hosted MCP server: MCP 2025-11-25, Streamable HTTP, stateless.
  • Five tools with an app-only split: a model can draft and cancel, but only a parent's tap can grant pickup authority.
  • MCP Apps cards at 768×480 with zoom 1.667, on Phone and in an Echo Show 8 frame.
  • A simulated add-on that is a real MCP client and MCP Apps host, labelled as simulated. Parents speak in synthetic voices through real speech-to-text.
Alexa+ add-on requirement Pickup Note
401 on a missing, invalid or expired token, without WWW-Authenticate Done
Each household's data isolated Done: per-family scoping inside a per-visitor sandbox
Round trip under 500 ms Done: tools/call p95 = 149 ms from a laptop
MCP Apps card: one ui:// resource, 768×480 at zoom 1.667, layout from deviceClass Done, in our simulated host
OAuth 2.1 + PKCE account linking (Login with Amazon) and Tier 1 discovery without user login Not built (hackathon tokens instead); plan in the README
Functional Requirement 9, Voice-Only Experience, for Confirm and Allow once Not met, deliberately: a model must never grant pickup authority

Safety and privacy

  • The release rule is deterministic code with 39 truth-table rows. No model decides.
  • No face recognition, and no computer vision at all.
  • A person always decides, after checking photo ID against the full name in the designation.
  • No child names or pickup words in what the model sees.
  • Ring media is never stored; parents never see the provider's Ring data.

What's real and what's simulated

Real: the door screen, stand-in page, release rule, MCP server and cards, signed-event checks, Ring Partner API calls (device list, live view of the Playground's simulated camera, history), speech-to-text. Simulated and labelled: the Alexa+ device itself (our simulator is a real MCP client), doorbell and car events (our signed feeder), the voices (synthetic), parent notifications, and the people and daycare (fictional).

How we built it

Chris Jagdeo, an AI-assisted product builder, directed Claude Code, which wrote the code from a written spec and plan. Everything runs on Cloudflare's free plan, at $0.

Challenges

The Ring docs disagreed with themselves. The docs MCP server's answer put the motion sub_type at data.subType, while api-documentation.html says data.attributes.sub_type. A partner following the MCP answer would silently drop vehicle events, so our parser accepts both.

In our runs, Ring's live view played in installed Google Chrome but not in Playwright's bundled Chromium. In Chromium the tile reached playing and no first frame arrived within 10 s; in Chrome the first frame arrived after 1771 ms. Any scene that shows a real Ring live view now runs in installed Chrome.

Workers AI Whisper answered 503 once, about 20 s after a deploy, and every later call in that run passed. The client now retries once on a 503.

What's next

  • A pilot as a Ring Private Use App (bypasses certification; up to 5 allowlisted Ring accounts).
  • Parent account linking with Login with Amazon, and Tier 1 discovery.
  • A provider-side company for any public listing (Ring §4.0).
  • Providers pay a monthly subscription in the Ring Appstore; parents and stand-ins never pay or install anything.

Limits

Designed to serve as the parent's written designation; not legal advice. The door log is designed to help with the visitor log; it is not a compliance claim. A staff aid, not identity verification. English only.

Built With

  • cloudflare-workers
  • durable-objects
  • mcp
  • mcp-apps
  • preact
  • ring-developer-playground
  • ring-partner-api
  • typescript
  • webrtc/whep
  • workers-ai
Share this project:

Updates

Submission history