Skip to content
Development
Skill

/webmcp

Implement WebMCP in web projects — add browser-native structured tools for AI agents using imperative JS or declarative HTML APIs. Full lifecycle from setup through testing and optimization.

From plugin
claude-command-suite
1.4k12 skills89 agents199 commands

Claude Code

$ npx -y skills add qdhenry/Claude-Command-Suite --skill webmcp --agent claude-code

SKILL.md

webmcp.SKILL.md
name: webmcp
description: Implement WebMCP in web projects — add browser-native structured tools for AI agents using imperative JS or declarative HTML APIs. Full lifecycle from setup through testing and optimization.

<essential_principles>

WebMCP is a browser-native standard that exposes structured tools for AI agents on websites. Instead of screen-scraping, agents interact through typed JavaScript APIs and HTML annotations.

**Two APIs:**

  • **Imperative API** — `window.navigator.modelContext` — register tools via JavaScript
  • **Declarative API** — HTML `toolname`/`tooldescription` attributes on `<form>` elements

**Prerequisites:** Chrome 146.0.7672.0+, `chrome://flags/#enable-webmcp-testing` enabled.

**Core principles that always apply:**

1. **Tools must be atomic and composable** — one function per tool, no overlapping tools with nuanced differences. Combine similar tools into one with input parameters.

2. **Accept raw user input** — tools should accept natural strings (e.g., "11:00") not computed values (e.g., minutes-from-midnight). Minimize cognitive computing for the model.

3. **Validate in code, not schema** — schema constraints are helpful but not guaranteed. Validate within execute functions and return descriptive errors so agents can self-correct.

4. **Update UI before returning** — agents use UI state to verify execution. Ensure execute/submit logic updates visible state before resolving.

5. **Positive, verb-first descriptions** — describe what the tool does and when to use it. Avoid negations. "Creates a calendar event for a specific date" not "Do not use for weather."

</essential_principles>

<intake> What would you like to do?

1. **Set up WebMCP** in a project (initial integration) 2. **Add a tool** using the imperative JavaScript API 3. **Add a tool** using the declarative HTML form API 4. **Debug** WebMCP tools that aren't working 5. **Audit** existing WebMCP implementation for best practices 6. **Test** WebMCP tools 7. Something else

**Wait for response before proceeding.** </intake>

<routing> | Response | Workflow | |----------|----------| | 1, "setup", "integrate", "install", "start" | `workflows/setup-webmcp.md` | | 2, "imperative", "javascript", "js", "register", "programmatic" | `workflows/add-imperative-tool.md` | | 3, "declarative", "html", "form", "annotate" | `workflows/add-declarative-tool.md` | | 4, "debug", "fix", "broken", "not working", "error" | `workflows/debug-webmcp.md` | | 5, "audit", "review", "check", "best practices" | `workflows/audit-webmcp.md` | | 6, "test", "verify", "inspect" | `workflows/test-webmcp.md` | | 7, other | Clarify, then select workflow or references |

**After reading the workflow, follow it exactly.** </routing>

<reference_index>

All in `references/`:

**APIs:** imperative-api.md, declarative-api.md **Design:** tool-design.md **Events:** events-and-css.md **Quality:** testing.md, anti-patterns.md

</reference_index>

<workflows_index>

All in `workflows/`:

| Workflow | Purpose | |----------|---------| | setup-webmcp.md | Initial WebMCP integration into a project | | add-imperative-tool.md | Register tools via JavaScript API | | add-declarative-tool.md | Annotate HTML forms as WebMCP tools | | debug-webmcp.md | Diagnose and fix WebMCP issues | | audit-webmcp.md | Review implementation against best practices | | test-webmcp.md | Test tools with inspector extension and agents |

</workflows_index>

<templates_index>

All in `templates/`:

| Template | Purpose | |----------|---------| | imperative-tool.md | Scaffolding for JS-registered tools | | declarative-form.md | Scaffolding for HTML form-based tools |

</templates_index>

<verification_loop>

After every WebMCP change:

1. Open Chrome DevTools console — check for JS errors 2. Verify `navigator.modelContext` exists (Chrome flag enabled?) 3. Use Model Context Tool Inspector extension to list registered tools 4. Manually execute a tool from the inspector to confirm it works 5. Check that UI updates are visible after tool execution

Report to user:

  • "Tools registered: X imperative, Y declarative"
  • "Tool [name]: executes successfully / returns error [detail]"
  • "UI state: updates correctly after execution / missing update"

</verification_loop>

Read more
@qdhenry
Ships withclaude-command-suite

A comprehensive development toolkit designed following Anthropic's Claude Code Best Practices for AI-assisted software development.

1.4k12 skills89 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.4k
Star history of qdhenry/Claude-Command-Suite on GitHub, a chart by star-history.com

Other skills on claude-command-suite.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about webmcp.

Which coding agents can use webmcp?
webmcp installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.