What it is
Approval Desk is a WebMCP powered approval surface for agentic work that should not be allowed to complete itself.
The core idea is simple: an agent can do useful work, propose revisions, draft engagement letters, estimate scope, check availability, and prepare decisions. But when the work reaches a trust boundary, such as approval, booking, pricing, or publication, the human has to act.
Why WebMCP fits
This is a strong fit for WebMCP because the tool surface changes with the work. The page registers 12 baseline tools through document.modelContext. When a human approval gate is pending, a 13th tool appears. When that gate closes, the extra tool disappears.
The tools are not just a fixed manifest. They reflect the live state of the work.
Better experience
For the human, the page reduces decision fatigue. Instead of hunting through drafts, calendars, pricing notes, and approval threads, the person sees what is waiting, what changed, why the agent proposed it, and the exact decision needed.
For the agent, the page removes guesswork. It can call structured tools for pending approvals, deliverable review, revision proposals, variant queues, scope, quotes, availability, and staged engagement letters without scraping the layout or pretending that a click equals judgment.
The human and agent boundary
The demo's Judge mode shows the central proof: a scripted approval click is refused. The gate only closes on a trusted human gesture.
That is the memorable point of the project. WebMCP is not only about making websites easier for agents to use. It can also make websites safer by giving agents useful tools while preserving human authority.
Implementation
Approval Desk is a fully static app hosted on Cloudflare Pages. It registers tools through document.modelContext.registerTool, uses typed input schemas and tool annotations, listens for toolchange, and reads back the active tool registry with document.modelContext.getTools.
The approval flow uses an abortable human gate. The agent can ask for approval and can withdraw its own pending request. It cannot approve, publish, book, or send on a person's behalf.
All engagements shown in the demo are invented sample data. No real client work appears in the project.
Log in or sign up for Devpost to join the conversation.