Inspiration
A household task can look finished from one angle while its real condition remains unmet. Moving bins beside a house, for example, still leaves a problem if they block the walkway. Clearway began with the idea that an observation should be judged against the whole request, including the parts a camera cannot settle. We wanted a way to explain which conditions have evidence, which remain uncertain, and what a person should check next.
What it does
Clearway is a local photo-review app for defining a physical result, recording successive authorized photographs, and seeing which completion conditions remain. It preserves original judgments and later corrections, retains the same task across reloads, and reopens completed work without carrying old success into a new scene. Its spatial-review interface invokes a self-hosted MCP tool with the current photo identity and user-supplied region, object, visibility and coverage annotations. The returned proposal explains the condition; a person reviews the marked photo and explicitly accepts it before the task changes. The app does not analyze pixels automatically.
How we built it
The private submission composition combines the pinned photo workbench, the unchanged desired-state evaluator and a licensed real-photo course. A Node.js server serves the HTML/CSS/JavaScript app and a stateless MCP Streamable HTTP endpoint using protocol 2025-11-25. The browser initializes the endpoint, discovers the explicit-annotation tool, sends bounded geometry and source identities, and verifies the returned task and observation identities. Accepted proposals enter the existing immutable correction history. IndexedDB saves complete revisions atomically and rejects stale writes. Photo pixels stay in the browser; the MCP tool receives annotations only.
Challenges
Movement can leave a request unfinished. In the real photographic course, the bicycle folds but the bag remains attached and a person still holds it. Correcting a mistaken bag judgment must preserve the earlier record. Spatial comparisons also need a declared view, complete region coverage and explicit visibility: an empty object list alone cannot establish a clear region. The source video has no verified capture clock, so the example retains frame offsets and labels its date field as an ordering anchor. MCP failures and mismatched photo identities must not produce an accepted result.
Accomplishments
The composed application was received in Chrome through initial, partial, corrected, completed, reloaded and reopened states using three attributed real photographs. A separate spatial bag-placement course invoked the actual local MCP tool on real partial/final photographs, consumed its matching result, and saved an explicitly accepted correction with the tool-call identity. The native suite passes 91 tests, including actual HTTP protocol, validation, source identity, client consumption and outage behavior. This is a working assisted review experience; actual Alexa account/client use and official Ring runtime input are not established.
What we learned
Useful completion judgments need small, inspectable conditions with their own evidence. A computation tool is more trustworthy when its inputs, source identity and explanation stay beside a reviewable photograph, and when accepting its proposal is separate from calling it. Unknown conditions and corrections are part of a useful task history.
What's next
Next we plan to exercise the MCP tool through an actual assistant or Alexa client, improve visual region entry, and add portable task backup. Ring remains a future authenticated observation provider. An automatic image-to-object path would need its own implementation and independent evaluation; the current product deliberately relies on explicit human annotations and separate confirmations.
Cover artwork
The AI-generated cover illustrates the bicycle-and-bag review example. Its photographic reference comes from “Folding a Brompton” by Bossphotography, available through Wikimedia Commons under CC BY 4.0. The reference was reinterpreted with a new composition, title and boundary annotation.
Built With
- css
- html
- indexeddb
- javascript
- model-context-protocol
- node.js
- streamable-http

Log in or sign up for Devpost to join the conversation.