cd /news/developer-tools/building-for-the-webmcp-challenge-ex… · home topics developer-tools article
[ARTICLE · art-112535] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Building for the WebMCP Challenge? Expose your real actions, not a chatbot

OpenAI, in partnership with Chrome, Cloudflare, Shopify, Vercel, and Netlify, has launched the WebMCP Challenge, a hackathon running from August 25 to September 3 on Devpost with $35,000 in prizes. The challenge encourages developers to build tools using WebMCP, a browser API that allows web pages to expose real actions to AI agents. An open-source maintainer of a WebMCP tool advises participants to register actual site actions rather than chat interfaces and to return structured data from tools to ensure agent demos succeed.

read3 min views2 publishedAug 27, 2026

The WebMCP Challenge is live — OpenAI with Chrome, Cloudflare, Shopify, Vercel, Render, and Netlify, running Aug 25–Sep 3 on Devpost, with $35k in prizes. Ten days to build something with WebMCP: the browser API that lets a page hand AI agents real tools to call instead of making them click through your UI.

I maintain an open-source WebMCP tool (disclosed bias — link at the end), so I've watched a lot of these builds. The projects that demo cleanly and the ones that fall apart in front of an agent differ on exactly two things. If you're building this week, here they are.

The reflex is to register a chat

or ask

tool that wraps a search box. Don't. An agent already is the chat interface — it doesn't need another one. What it can't do is your site's actions: search your catalog, add to cart, check availability, book a slot, submit the form. Register those.

document.modelContext.registerTool({
  name: "search_catalog",
  description: "Search products in this store",
  inputSchema: {
    type: "object",
    properties: { q: { type: "string" } },
    required: ["q"],
  },
  async execute({ q }) {
    const res = await fetch(`/api/search?q=${encodeURIComponent(q)}`);
    const items = await res.json();
    return {
      content: [{ type: "text", text: `${items.length} results for "${q}"` }],
      structuredContent: { items },
    };
  },
});

(The registration getter moved from navigator.modelContext

to document.modelContext

on Aug 10 — feature-detect both if you want to be safe, and gate on support so non-agentic browsers are unaffected.)

This is the one that fails demos. A human reads your page; an agent reads what your tool returns. So a tool that does its job and returns { ok: true }

— or navigates the page and returns nothing — has told the agent nothing. The next step in the agent's plan has no data to act on, so it stalls or hallucinates.

Return the actual result as structuredContent

: the items found, the new cart total, the booking confirmation number, the validation error. Treat every tool's return as an API contract you now owe the agent — because that's what it is.

Three failure modes to check before you record your demo:

{ ok: true }

from a search tool. Return the results instead.The Challenge grades a working demo. Two things it won't surface that bite the moment a real agent hits your site:

Neither is hard to reason about; both are easy to forget while racing a 10-day clock.

If your project is an existing site rather than a greenfield app, you don't have to hand-write a registerTool

for every action. Latch is an MIT-licensed one-line script that auto-detects your search, cart, and forms and exposes them as WebMCP tools — handy when you want coverage fast and time is the constraint (source). Write them yourself if you want full control; either way, the two rules above still decide whether your demo works.

Good luck in the Challenge. Build the actions, honor the return contract, and your agent demo will do the thing on the first take.

── more in #developer-tools 4 stories · sorted by recency
── more on @openai 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/building-for-the-web…] indexed:0 read:3min 2026-08-27 ·