What it does
CAIOS WebMCP Agent Gateway is a standalone synthetic-data pet-care workspace where a person and an AI agent operate on the same visible state through five document-bound WebMCP tools.
The agent reads Synthetic Pika's profile, daily focus, and events; previews an exact structured check-in; requests human review; commits only the unchanged confirmed payload; and reads the result back from browser-only storage.
Why I built this
I chose the name CAIOS WebMCP Agent Gateway because CAIOS is our startup project, and the gateway was my way to test whether WebMCP could turn a pet-care page into a safer shared workspace for people and agents.
Before we adapt this pattern to real market needs, I wanted a small, inspectable build that could prove the interaction model without exposing production CAIOS technology or real pet data.
Pika's everyday care made the test concrete: an agent may help structure a routine observation, but the person should still see exactly what will be recorded and remain in control of the write.
Why WebMCP
Agents normally infer controls from visual interfaces. This project instead registers five narrow tools with document.modelContext.registerTool(...):
get_synthetic_pika_profilelist_synthetic_pika_eventsget_synthetic_pika_todaypreview_synthetic_pika_check_incommit_synthetic_pika_check_in
Preview validates without writing and returns a payload-bound confirmation token. Commit fails closed unless it receives the unchanged payload and matching token. A changed or unpreviewed payload is rejected.
Human + agent collaboration
The agent reduces repetitive interaction while the person sees the proposal, controls confirmation, and verifies the outcome. Both then see the same browser-only state.
What I learned
The most useful lesson was that exposing a tool is only half of the work. The human page and the agent must stay consistent around the same proposed action.
During testing, we found a real UI bug: after preview, a re-render could reset the visible form to its defaults while the pending payload still held the earlier values. That could make the confirmation screen misleading even though the underlying token guard still worked.
We fixed it by preserving the exact previewed values in the UI and invalidating confirmation whenever the form changes. This reinforced the main product principle behind the demo: WebMCP can give an agent useful capabilities, but consequential actions still need deterministic guards and visible human review.
Safety and hackathon boundary
All data is fictional and marked synthetic_hackathon_only. Mutable state stays in namespaced browser localStorage. The demo has no production CAIOS API, database, customer record, real pet record, private prompt, proprietary memory engine, nutrition reasoning, or clinical logic. It does not diagnose, prescribe, or replace veterinary or emergency care.
CAIOS existed before the submission period as a broader pet-care product vision. During the submission period, we created this standalone WebMCP Gateway, five tools, synthetic dataset, confirmation guards, seven deterministic tests, CI, documentation, public repository, and independent deployment.
Implementation and verification
Built with TypeScript, Vite, the WebMCP browser API, and deterministic browser storage. Seven tests cover the tool boundary and guarded writes. Type checking and production builds pass.
The live workflow was verified end-to-end in an OpenAI cloud Chrome CDP environment: five tools were discovered; a direct commit failed closed; preview returned a payload-bound token; the exact payload committed; and a final read returned the same visible browser-only state.
Try it
Live demo: https://caios-webmcp-challenge.vercel.app
Public repository: https://github.com/corwinlim/caios-webmcp-challenge
Demo video: https://youtu.be/FDoAIoCU3i0
No account or credentials are required. Open the live URL in ChatGPT's in-app browser or Chrome 149+ with WebMCP testing enabled.
Built With
- chatgpt
- css
- html
- openai-codex
- typescript
- vercel
- vite
- vitest
- webmcp

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