Inspiration
I wanted to solve a real problem that affect small online shops. I researched the issues they face and built an app that solves those. From 25 minutes of manual copy/pasting per batch of orders to under 3 minutes.
What it does
OpsFlow is a 3-screen console — Batch → Shipping → Holds — It is webMCP native, then the full functionality can be controlled by external AIs. OpsFlow also has a built-in fully functional AI chat box that allows to use natural language to control the application.
How we built it
Vite + React SPA on Vercel, origin-isolated with Origin-Agent-Cluster: ?1 and Permissions-Policy: tools=(self). Five imperative tools registered once in src/webmcp/register.ts with hand-written JSON Schema, readOnlyHint/openWorldHint annotations, validation, input limits, and signal abort handling, plus a declarative shipping form. Built-in agent is built using Gemini 3.6 Flash.
Challenges we ran into
WebMCP only exists in origin-isolated documents behind a flag/ChatGPT browser, with an Aug 2026 draft spec — so we had to probe capability, ban cross-origin iframes, keep GEMINI_API_KEY server-side, and still run fully in a plain browser. Making abort-safe tools that never throw (typed TOOL_ABORTED/DEGRADED errors) and replay golden cache instead of blanking, while gating holds/fulfillments on human confirmation, was the hardest correctness work.
Accomplishments that we're proud of
This is my first webMCP application. The built-in AI chat window also works as well as I had planned, I didn't need to reduce the scope or functionality.
What we learned
WebMCP does provide a lot of functionality. It looks like the future of the web will be AI agents interacting with pages. Functionality is a league ahead of DOM scrapping
What's next for OpsFlow — WebMCP Fulfillment Console for Solo Operators
Stronger Built-in chat capabilities. Using external WebMCP agents is still no widespread. However allowing a builtin chatbot overcomes that limitation. WebMCP run inside the same webpage the users get the full functionality without even knowing it.
Built With
- ajv
- chatgpt-in-app-browser
- chrome-149
- css
- declarative-webmcp-forms
- gemini-2.5-flash
- gemini-api
- html
- json-schema
- node.js
- origin-agent-cluster
- permissions-policy
- playwright
- react
- typescript
- vercel
- vercel-serverless-functions
- vite
- vite-node
- vitest
- webmcp
Log in or sign up for Devpost to join the conversation.