Inspiration
A sauna quote can look complete while leaving out the electrical circuit, panel upgrade, foundation, permits, assembly, ventilation, or service responsibility. A buyer sees one confident number. The real landed cost can be thousands higher.
We built Sauna Quote X-Ray so the buyer and their AI agent can investigate that gap together before anyone signs.
What it does
Sauna Quote X-Ray turns a sauna quote into a shared, visible decision canvas. The buyer can see and edit every priced item, scope decision, planning range, risk finding, contractor question, and agent action.
In the reviewer-safe demo, a quoted total of $11,750 becomes a sourced projected range of $12,250 to $18,650 after missing electrical and site scope is made explicit. The agent can then create the exact questions the buyer should ask the contractor.
Why WebMCP
This workflow is a strong fit for WebMCP because the source of truth should remain the website, not disappear into a separate chat transcript.
The agent is fast at turning ambiguous scope into structured state. The human knows what the seller promised and must retain authority over every assumption. WebMCP lets both act on the same interface:
- The agent loads or structures the quote.
- The human sees every change immediately.
- Either side can correct a line item or scope status.
- The agent re-reads the visible state and builds the next questions.
- Nothing is sent or persisted unless the product explicitly adds such a capability. This demo does not.
That shared round trip was difficult before WebMCP. A normal chatbot can produce advice, but it cannot reliably keep its work synchronized with the buyer's live, editable decision surface.
How we built it
The app is a standalone Next.js 16 and React 19 project deployed on Vercel and presented inside Sauna Guide. It registers eight narrow, page-scoped tools through document.modelContext.registerTool():
load_demo_sauna_quoteget_sauna_quote_xray_stateset_sauna_project_contextupsert_sauna_quote_line_itemremove_sauna_quote_line_itemset_sauna_quote_scopebuild_sauna_contractor_questionsstart_sauna_quote_xray
The tools and human controls operate on one React state model. Pure TypeScript summary functions calculate completeness, priced exposure, the projected total, and quote-specific questions. The read tool marks seller and user text with untrustedContentHint: true. JSON schemas reject unknown properties and cap strings, arrays, amounts, and line count.
Safety and privacy
All demos use synthetic quote data. Working state stays in the current tab. No tool uploads a quote, stores customer data, sends email, contacts a seller, or creates a lead. Every agent mutation is visible in the shared activity log and can be corrected by the human.
The app links each planning range and risk finding to buyer-facing Sauna Guide sources. It also labels estimates as planning aids rather than contractor quotes.
Challenges we ran into
The hard part was not registering a tool. It was designing tool boundaries that are useful without quietly crossing the line from analysis into a real commercial action. We separated reading, editing, scope resolution, question building, and reset behavior so each action is explicit and reviewable.
We also had to keep React's visible state and WebMCP execution synchronized without stale closures. A state ref feeds tool execution while normal React state renders the same result to the buyer.
Accomplishments that we're proud of
- Eight working WebMCP tools with narrow schemas and explicit safety annotations
- One shared canvas where human and agent edits stay synchronized
- A coherent buyer workflow, not a hidden prompt wrapper
- Safe synthetic fixtures that judges can use without creating a customer lead
- Automated unit, type, lint, production-build, and browser journey coverage
- Production verification in ChatGPT's in-app browser with all eight tools discovered and invoked
What we learned
WebMCP is most valuable when the website already has meaningful state, domain rules, and human controls. The agent becomes a collaborator inside the product instead of a separate destination.
We also learned that reversible actions and visible provenance make agent behavior easier to trust. The activity log is not decoration. It is part of the interaction contract.
What's next
The next step is optional local document parsing that lets a buyer structure their own quote without uploading it to a server. We would also add side-by-side quote comparison, saved local sessions, and a handoff package the buyer can choose to send only after explicit confirmation.
Try it
Live WebMCP app: https://sauna.guide/tools/sauna-quote-xray
Public MIT repository: https://github.com/Ac0AI/sauna-quote-xray
Buyer research and source guides: https://sauna.guide
Suggested prompt:
Load the backyard quote. Make the missing electrical work explicit, flag anything still unclear, and build the contractor questions. Contact nobody.
This project was created after the challenge opened on August 25, 2026. The public Git history shows the implementation, safety hardening, tests, deployment, and submission media created on August 27, 2026.
Built With
- next.js
- react
- tailwind-css
- typescript
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.