Inspiration
I spend a lot of time in red CI. Vercel, Helm schema jobs, Cloudflare extraEnv — the graph is on one tab, ChatGPT is on another. I paste a log, lose the timeline, and the agent starts guessing through the DOM. WebMCP is the missing surface: the same console I already stare at, with named tools so an agent can diagnose and patch on that page, and I still Confirm anything irreversible.
Dashboards are for humans. Chat is for logs. Afterfail is the deploy graph both can drive.
What it does
Afterfail is a failed preview/deploy console. Four canned runs (Vercel Helm --defaultdb, Netlify Next OOM, Cloudflare missing HTTP_PROXY, Render $PORT health check) plus New run / create_run so you can paste a real log.
A person and ChatGPT (or Chrome WebMCP) share:
- the job timeline and log
get_failed_jobs/get_log_sliceinstead of scrapingset_retry_policy(the editor updates before the tool returns)redeploy, which stops on an on-page confirm- an honesty case:
workers-edge-previewstays red. Retries do not set env vars.
How I built it
Next.js App Router, TypeScript, Tailwind, Zustand. No backend, no auth, no in-page chatbot.
Tools register on the top-level /console document with document.modelContext.registerTool (native first; @mcp-b/webmcp-polyfill only if registerTool is missing). Execute is (input, { signal }). Results are JSON objects, not MCP content arrays — ChatGPT site tools stringify JSON. Sensitive actions share the same confirm modal as the Redeploy button. readOnlyHint / untrustedContentHint on the log tool.
What I learned
WebMCP is not “wrap every button.” Five sharp outcome tools beat twenty. requestUserInteraction is not in the shipping IDL, so confirm had to be our modal. ChatGPT ignores iframe and declarative form tools. And a tool that always “succeeds” on retry is a lie — the Cloudflare fixture is the feature.
Challenges
Getting a green redeploy meant applying policy on the failing job (schema-job, not helm-lint) before Confirm. Hosting on Render wanted a credit card even with credits, so the live URL is Vercel. Cursor’s cursor-ide-browser MCP is not WebMCP; judges use ChatGPT’s in-app browser or Chrome with chrome://flags/#enable-webmcp-testing (Sol or Terra, not Luna).
Live: afterfail.vercel.app
Repo: github.com/kriyanshii/afterfail
Built With
- chrome
- codex
- mcp
- nextjs
- node.js
- openai
- react
- tailwind
- typescript
- vercel
- webmcp
- zustand
Log in or sign up for Devpost to join the conversation.