-
-
WebMCP integration docs: declare support in your manifest, promote it into page tools with @aiendpoint/webmcp
-
DemoWeather: live Open-Meteo data. WebMCP tools generated from its /.well-known/ai manifest update this card when an agent calls them
-
aiendpoint.dev - the open /ai standard: ~800 tokens of pure signal instead of 10k-50k tokens of page noise
-
Registry search results with the ⚡ WebMCP badge - DemoWeather (verified, score 100) tops the results agents and humans both see
-
Real Chrome with the WebMCP flag: tools registered, executeTool call received - the visible counter proves the loop works
Inspiration
WebMCP gives an agent structured tools for the page it is already on. But watching agents work, we kept hitting the step that comes before that: which page should the agent open in the first place? An agent that needs weather data or a currency rate still guesses URLs or scrapes search results.
We had been building that missing step for months: AIEndpoint, an open
standard where any site publishes a capability manifest at /.well-known/ai
(an IETF Internet-Draft), plus a live registry indexing thousands of
services. When WebMCP appeared, the two ideas snapped together:
AIEndpoint finds the right website. WebMCP operates it.
We are honest with ourselves: an independent project like this may never become the standard. The giants are drafting their own, and there is only so far one person can push. But robots.txt also started with one individual and an idea the web happened to need. We simply wanted to cut the traffic LLM agents waste crawling site after site just to figure out what each one can do - and we entered this challenge hoping more people will join us.
What it does
- On aiendpoint.dev, an in-browser agent calls
find_services("a weather service with no auth"). The results the agent receives render as cards on the page the human is looking at.select_serviceopens the detail view with a live "Open service" link. - One click later, on weather.aiendpoint.dev, the agent calls
current_weatherand the weather card in front of the user updates with live Open-Meteo data.
Human and agent share one screen at every step. Nothing happens in a hidden console: every tool call has a visible consequence on the page. Before WebMCP, a service directory for agents could only be a server-side HTTP API, unreachable exactly where users work. Now discovery, selection, and execution all happen inside one browsing session, visibly shared between the user and the agent.
How we built it
@aiendpoint/webmcp(new package, ESM + IIFE): promotes a site's/.well-known/aimanifest into WebMCP tools. Tool names, descriptions, and JSON input schemas are derived from the manifest: the spec's compact parameter notation ("string, required -- city name") is parsed into schema types and required lists. Execution stays in explicit per-capability handlers, so a site never exposes anything it did not consciously wire up.- aiendpoint.dev (Next.js) registers
find_services/select_serviceon every page; tool calls navigate the visible UI. A/webmcp/pingdiagnostics page reports the browser's actual WebMCP surface and shows a live call counter. - DemoWeather (FastAPI) serves its manifest, loads the adapter's IIFE bundle, and wires three handlers that drive the page's weather card, backed by live Open-Meteo data with a labeled stale-cache fallback.
Challenges we ran into
- The API surface is still moving. Registration probes
document.modelContext,navigator.modelContext(now deprecated), and older entry points, preferringregisterToolwithAbortSignalcleanup. We learned by experiment thatexecuteTooltakes the registered tool object plus a JSON string, so our handlers normalize both parsed objects and raw strings. provideContextreplaces the whole tool set on every call, so independent components clobbered each other until we kept a page-wide union of registered tools.- React Strict Mode silently unregistered tools in development via the register/cleanup/register cycle until we made registration fully idempotent.
- Making discovery honest: we rewrote our registry search to match capability keywords against descriptions, and fixed count/filter bugs the new browser-driven usage exposed.
Accomplishments that we're proud of
- The full loop is verified in a real browser, not just designed: tool
registration, an actual
executeToolcall, and a visible UI change on the page. - The discovery chain runs on live production data: the registry indexes 3,600+ services, and DemoWeather registers itself, passes our own validator at 100/100, and tops the "weather" search results agents actually see.
- One adapter call makes any
/.well-known/aisite agent-operable - schemas included - while keeping execution in explicit handlers the site controls. - We migrated the entire platform (registry, validator, CLI, MCP server, three demos, and every framework adapter) to the well-known location during the hackathon window, and cleared all 71 dependency audit vulnerabilities while we were at it.
What we learned
ogfooding an open spec against a second standard is the fastest way to find
its weak points. Migrating /ai to /.well-known/ai (draft-01), parsing
our own compact notation into JSON Schema, and watching a real browser call
our tools taught us more in three days than months of design.
What's next for AIEndpoint - Service Discovery for the Agentic Web
Schema-typed params in spec v1.1, mutations with confirmation UI, auth-scoped tools, and a "WebMCP-ready" tier on the registry's verification badge, so agents can filter for sites that are operable, not just discoverable.
Built With
- cloudflare
- esbuild
- fastapi
- fastify
- next.js
- open-meteo
- python
- react
- redis
- supabase
- typescript
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.