# WebMCP browser tool declaration

> WebMCP browser tool declaration: WebMCP lets sites expose tools to in-browser agents. It is the only normative deliverable of the W3C Agentic Web WG.

- Source: /checks/webmcp
- Site: AgenticWebScore
- Language: English

---
WebMCP lets sites expose tools to in-browser agents. It is the only normative deliverable of the W3C Agentic Web WG.

| Property | Value |
| --- | --- |
| Check id | `webmcp` |
| Dimension | Protocol Discovery (25%) |
| Tier | Emerging — pool 5 pts |
| Weight inside tier | 2 |
| Impact | Medium |
| Maturity | Experimental — An early convention that may still change shape. |
| Conditional | No |
| Publishing skill | `webmcp` |
| Standards | W3C WebMCP |

## What the scanner requests

- `/.well-known/webmcp.json`
- `/.well-known/webmcp`
- `/webmcp.json`

It also reads documents it has already fetched: `$home`.

## What is measured

The scanner GETs /.well-known/webmcp.json, /.well-known/webmcp and /webmcp.json, and also inspects the homepage. It passes when it finds a tool declaration, either a tools array whose entries each give a name, a description and a JSON Schema inputSchema, or the equivalent in-page document.modelContext.registerTool({...}) calls. It partially passes when tools are declared without an inputSchema or description, or when the page only loads the WebMCP API without registering any tool.

## Reproduce it yourself

You do not have to take our word for any of this. Run the same measurement against your own domain:

```bash
DOMAIN=https://your-domain.example
for p in /.well-known/webmcp.json /.well-known/webmcp /webmcp.json; do printf '%s -> ' "$p"; curl -sS "$DOMAIN$p" | jq -c '[.tools[]? | {name,description,inputSchema}]' 2>/dev/null || echo "missing or not JSON"; done
```

## The fix

This is the artifact to ship. It is the complete change, not a description of one.

```json
{
  "tools": [
    {
      "name": "search_products",
      "title": "Search products",
      "description": "Search the public catalogue by free-text query and return matching products with prices.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string", "description": "Free-text search query" },
          "limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 10 }
        },
        "required": ["query"],
        "additionalProperties": false
      }
    }
  ]
}
```

> WebMCP is a W3C Community Group Draft (explicitly not on the W3C Standards Track) whose normative surface is the in-page document.modelContext.registerTool() API, so ship those calls as well; no well-known manifest is defined by the spec.

## Standards referenced

- `W3C WebMCP`

## Related checks

| Check | Tier | Impact | Same skill |
| --- | --- | --- | --- |
| `mcp-card` — MCP server card | Essential | High | — |
| `openapi` — OpenAPI definition | Essential | High | — |
| `oauth-discovery` — OAuth discovery documents | Essential | High | — |
| `api-catalog` — API catalog | Recommended | Medium | — |
| `agent-skills` — Agent Skills declaration | Recommended | Medium | — |
| `a2a-card` — A2A agent card | Recommended | Medium | — |
| `a2a-signed` — Cryptographically signed agent card | Emerging | Medium | — |
| `auth-md` — /auth.md agent authentication guide | Emerging | Medium | — |
