Inspiration
I run a local digital presence here in Peru with Kurogrid, and I kept seeing Owners drown in dashboards. ERP tabs, CRM tabs, booking tabs, all day clicking. Talking it out solves a lot of things, so I started building an agent embedded straight into the system. The Owner talks, the system does, the Owner just checks.
Developers today get two bad options for agents. Either the agent clicks around like a tourist with screenshots and DOM selectors, which breaks constantly. Or you build heavy API integrations with keys and OAuth that leak. WebMCP offered a third way, so I built Kuro Agent to prove it.
What it does
Kuro Agent is that idea in demo form. The vet clinic is just the example, do not get stuck on it. Think ERP, CRM, bookings, any system an Owner runs.
A customer books a visit in one turn. The agent reads Saturday slots, prepares the request, the human confirms. On the Owner side, plain words plus a calendar conflict turn into an exact plan. Luna moves to a held 11:30, Max stays at 12:00, the Owner approves that exact revision, and the customer decides. Website, workspace, and agent read the same data the whole time.
How I built it
Next.js on the front, Supabase Postgres behind it. The page registers tools on document.modelContext based on role and state. Every consequential call runs same-origin against row level security, with one-shot approvals bound to a SHA-256 state hash, plus an audit trail. The heavy logic lives in Postgres procedures, so impact calculation and holds are atomic. Gemini powers the demo booking helper, Resend sends the customer emails, and the demo runs on isolated 30-minute sandboxes.
Challenges we ran into
Plenty. Concurrency for one, leases stepping on each other mid-demo. The plan hash covers that, any row mutating before approval aborts the apply.
Two browser bugs ate my past few days. Registered tools carried circular window references that crashed JSON serialization, fixed with a schema sanitizer. And the inspector drawer got trapped under sticky headers until I portaled it to the body.
But mostly the WebMCP invocation itself. Sometimes the agent prefers computer use over the tools sitting right there. And models return empty arguments whenever they feel like it, so the client heals that from the published list. The biggest call was deleting the Owner copilot entirely, since a page calling itself is theater, not WebMCP.
Accomplishments that we're proud of
One operation moves three places at once, nothing books or moves silently, and agents run admin operations without ever touching a credential. That is the whole bet. And I will keep developing and refining this idea, this is just the beginning demo.
What we learned
Cutting corners always bills you later. Every invented fallback and silent default I shipped came back as a bug during recording. Say the true thing, even if it is uglier.
What's next for Kuro Agent
Real email delivery on the deploy, asking for the email in Talk instead of fabricating one, and the same pattern on more verticals. The big one is a fully integrated voice system, specially on the backoffice Owner side. Talk everything out, check, done.
Built With
- docker
- gemini
- nextjs
- postgresql
- react
- resend
- supabase
- tailwindcss
- typescript
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.