{"slug": "glippy-webmcp-a-coding-agent-plugin-for-making-a-site-usable-by-browser-agents", "title": "Glippy WebMCP – a coding-agent plugin for making a site usable by browser agents", "summary": "Glippy released WebMCP, an MIT-licensed coding-agent plugin that lets websites expose typed tools to browser agents via document.modelContext, with a four-skill workflow for auditing, implementing, verifying, and publishing agent-ready tools. The plugin enforces safety by classifying actions by effect and requiring human confirmation for irreversible actions, and it avoids eval and network requests beyond declared tools.", "body_md": "Make a website usable by browser agents — with tools wired to the code you already have, not to the shape of your pages.\n\n[WebMCP](https://github.com/webmachinelearning/webmcp) lets a page hand a browser agent\ntyped tools through `document.modelContext`\n\n, so the agent acts through your own logic\ninstead of guessing at your DOM. This repository is a coding-agent plugin that audits what\nyour site could expose, writes those tools against real seams in your codebase, proves each\none works in a real browser, and publishes the manifests that let agents find them.\n\n**MIT end to end. No vendor SDK. No telemetry** — the runtime makes no network request other\nthan the ones your own tools declare, and a test fails the build if that stops being true.\n\n**Claude Code**\n\n```\n/plugin marketplace add glippy-dev/glippy-webmcp\n/plugin install glippy-webmcp@glippy-dev\n```\n\n**Codex**\n\n```\ncodex plugin marketplace add glippy-dev/glippy-webmcp\ncodex plugin add glippy-webmcp\n```\n\nThen, in your own project, ask your agent to audit the site's agent readiness.\n\nFour skills, one arc:\n\n| Skill | What it does |\n|---|---|\n`auditing-agent-readiness` |\nRead-only. Produces a coverage table of user intents against the tools that exist — including the intents that are not worth building. Writes nothing at all. |\n`implementing-webmcp-tools` |\nGenerates tools behind a hard human approval gate, wiring each to the highest available seam. |\n`verifying-webmcp-tools` |\nExecutes every tool against the real site in a real browser and marks it verified, failed, or could-not-verify. Failed never ships. |\n`publishing-agent-manifests` |\nEmits the four artifacts that let agents discover your tools even where WebMCP is unsupported. |\n\nInventory a codebase first and you get forty candidate tools, on a page where Chrome's own guidance says an agent starts choosing worse above about twenty. Supply-first auditing is how a site ends up keyword-stuffed with tools nobody calls.\n\nSo the audit establishes what people actually try to do on the site, *then* inventories the\nseams, and matches only at the end. The row it exists to be able to print is\n`SKIP — no demand`\n\n.\n\nEach tool takes the highest rung available, because the rung decides whether it still works after the next redesign:\n\n**An exported client function**— already typed and exercised by your UI.** An HTTP route the client already calls**— stable across restyles, and if the route validates its body, your input schema was written by someone who knew the answer.**A form**— including the declarative target, marked experimental because the spec section describing it says, verbatim,*\"This section is entirely a TODO.\"***Recorded DOM steps**— works on anything, breaks on the next redesign.\n\nWebMCP has no consent primitive. `requestUserInteraction()`\n\ndoes not exist in the spec\nrepository at HEAD, despite Chrome's documentation referring to it. So nothing in the\nplatform stops a browser agent from calling a tool that charges a card.\n\nThis repository enforces it instead, as an error rather than a convention: an irreversible action must be gated by a confirmation in handoff mode, or end at a terminal navigation that returns control to your own UI. A warning sentence in a tool description is not a gate.\n\nActions are classified **by effect, not by HTTP verb** — a `GET`\n\nthat starts a checkout\nsession is a write — and `readOnlyHint`\n\nis derived from the step graph rather than trusted\nfrom the author, so a tool that writes cannot describe itself as safe.\n\n| Package | |\n|---|---|\n`@glippy/webmcp-flow` |\n\n`@glippy/webmcp`\n\n`plugin/`\n\nThe expression resolver is a path walker, not an evaluator: no `eval`\n\n, no `new Function`\n\n.\nA flow document is fetched over the network and inlined into your page, so anything that\ncould execute arbitrary text would be a remote-execution primitive aimed at your visitors.\nIt also means the runtime works under `script-src 'self'`\n\nwith no `unsafe-eval`\n\n.\n\nThe surface is `document.modelContext`\n\n— a `partial interface Document`\n\n. The string\n`navigator`\n\nappears zero times in the specification at HEAD; `navigator.modelContext`\n\nis a\n2025 alias that survives only as a deprecated fallback in polyfills. Code written against\nit silently finds nothing.\n\nTool names are 1–128 characters of `[A-Za-z0-9_.-]`\n\n— that is normative, and violating it\nthrows `InvalidStateError`\n\n. The ~30-character figure that circulates is Chrome ergonomics\nguidance, so this repository treats it as a warning and never as an error.\n\nFor local development: `chrome://flags/#enable-webmcp-testing`\n\n.\n\n```\npnpm install\npnpm test        # packages + the plugin hook\npnpm typecheck\npnpm lint\n```\n\n[MIT](/jbobbink/glippy-webmcp/blob/main/LICENSE).", "url": "https://wpnews.pro/news/glippy-webmcp-a-coding-agent-plugin-for-making-a-site-usable-by-browser-agents", "canonical_source": "https://github.com/jbobbink/glippy-webmcp", "published_at": "2026-08-27 11:33:40+00:00", "updated_at": "2026-08-27 11:48:42.043521+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["Glippy", "WebMCP", "Claude Code", "Codex", "Chrome"], "alternates": {"html": "https://wpnews.pro/news/glippy-webmcp-a-coding-agent-plugin-for-making-a-site-usable-by-browser-agents", "markdown": "https://wpnews.pro/news/glippy-webmcp-a-coding-agent-plugin-for-making-a-site-usable-by-browser-agents.md", "text": "https://wpnews.pro/news/glippy-webmcp-a-coding-agent-plugin-for-making-a-site-usable-by-browser-agents.txt", "jsonld": "https://wpnews.pro/news/glippy-webmcp-a-coding-agent-plugin-for-making-a-site-usable-by-browser-agents.jsonld"}}