-
-
Chrome discovers all five site-owned WebMCP tools registered by ProofDone.
-
ProofDone’s initial subscription case shows the current account, the customer request and that no outcome has been claimed yet.
-
The first preview shows the exact proposed effects against account version 41 before human approval.
-
After a synthetic billing change, the previously approved resolution is marked outdated and no outcome is claimed.
-
The old approved commit is rejected as STALE_PREVIEW with zero writes and no executed side effect.
-
After rereading the account, ProofDone offers the permitted fallback: stop renewal while preserving paid access.
-
The fallback has been committed, but ProofDone still waits for independent verification before confirming success.
-
Independent verification matches every approved effect and reports zero unresolved differences.
-
After the user sends only “Done,” ChatGPT rereads the account and recognizes the changed state without being told what changed.
-
A fresh local test run passes all 20 deterministic tests with zero failures.
Inspiration
Customer service is a large part of the real economy. The U.S. Bureau of Labor Statistics counted about 2.7 million customer service representatives in 2024. At the same time, Salesforce reports that service teams expect AI to resolve 50% of service cases by 2027, up from 30% in 2025. (U.S. Bureau of Labor Statistics, Salesforce State of Service)
WebMCP could make this work more efficient by allowing websites to expose their functions directly to AI agents. But this also creates a practical question:
What happens when an agent successfully calls a tool, but the result is no longer what the user approved?
For example, a customer may approve a refund and cancellation. Before the agent executes it, the refund window expires. The function may still run, but the meaning of the approved outcome has changed.
That became the starting point for ProofDone.
What it does
I developed ProofDone as an individual participant with help from ChatGPT. It is a synthetic subscription-resolution website where a customer asks to refund a €29 charge, stop future renewal, and preserve paid access if the refund is no longer available. The agent prepares the exact effects, and the user approves them on the website. A simulated external account change then expires the refund window. ProofDone rejects the old approval with:
_ STALE_PREVIEW
_Zero writes
_ No executed side effect
The agent must read the account again, discover the permitted fallback, and request approval for the changed effects. After execution, a separate verification step checks the observed account before the agent can confirm success. The final demonstrated result stops future renewal, preserves the paid period, creates no unavailable refund, and reports zero unresolved differences.
How we built it
ChatGPT helped me from the initial market analysis and use-case selection through implementation, debugging, test design, interface improvement, documentation, and evaluation. ChatGPT was my main implementation partner. It helped turn the initial market question into a working product . Codex was used only after the application was complete to help assemble the screenshot-based demo video, narration, subtitles, and technical media checks. ProofDone registers five native WebMCP tools:
get_account_state
get_resolution_options
preview_resolution
commit_resolution
verify_resolution
Together they implement:
Read → Preview → Approve → Commit → Verify
Each preview is bound to the account version, exact effects, an integrity hash, and an expiration time. If the state changes, the approval becomes invalid before any write occurs. The website remains responsible for state, allowed remedies, approval validity, writes, and verification. The AI agent interprets the customer’s request and explains the result, but deterministic TypeScript code decides what may actually happen.
Challenges and learning
The project developed quickly, without a major debugging crisis. The real challenge was defining what “done” should mean.
I learned that approval, execution, and verification are three different claims. A successful commit should not automatically be presented as a successful customer outcome: COMMITTED != VERIFIED
Another challenge was presenting this technical distinction in a way that a normal user could understand. The final interface therefore shows the exact proposed effects before approval and a human-readable Outcome Receipt after verification.
What's next for ProofDone
ProofDone is covered by 20 deterministic tests and was tested with ChatGPT Work and Chrome 152 using WebMCP. Next, I would test the same pattern with a real sandbox API and explore turning the contract logic into a reusable WebMCP component.
Built With
- chatgpt
- codex
- css
- github
- html
- javascript
- node.js
- typescript
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.