webmcp-tool

Guide

Discovery documents, and the robots.txt trap

WebMCP tools only exist while a page is open. A discovery document is how an agent learns you exist before it arrives — and the most common failure is a site hiding its own manifest.

Last reviewed 27 August 2026

There is a gap at the centre of WebMCP that is easy to miss until it bites: tools live in a page, so an agent cannot discover them without visiting first. It cannot include you in a plan it forms before the visit, and it cannot answer which sites can do this with your name in the list.

Discovery documents close that gap. They are small, static files at conventional paths that say what you offer to a machine that has not arrived yet.

The documents worth publishing

PathWhat it declares
/.well-known/mcp.jsonAn MCP server card: name, description, transports, packages
/openapi.jsonYour HTTP API, with operation IDs and typed schemas
/.well-known/api-catalogAn index of APIs, per RFC 9727
/.well-known/oauth-authorization-serverHow machine clients authenticate (RFC 8414)
/.well-known/oauth-protected-resourceWhich resource server a token is for (RFC 9728)
/.well-known/http-message-signatures-directoryWeb Bot Auth keys, for verifying an agent is who it claims

Most sites need one or two of these, not all six. A server card if you run an MCP server; an OpenAPI document if you have a public API. The auth documents only matter once something is protected.

A server card

{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json",
  "name": "com.example/catalog",
  "description": "Search the catalog, check accessory compatibility, read stock.",
  "version": "1.0.0",
  "websiteUrl": "https://example.com/developers",
  "remotes": [
    { "type": "streamable-http", "url": "https://example.com/api/mcp" }
  ]
}
/.well-known/mcp.json

The trap

This is the finding we see most often

A site publishes a server card pointing at /api/mcp, and its robots.txt carries a years-old Disallow: /api/. The endpoint works perfectly for anyone who already knows the URL. Every well-behaved crawler that would have discovered it is turned away at the door — and the site owner has no idea, because the thing they tested by hand works.

It is a good failure to understand because it is invisible from the inside. You verify the endpoint with curl, it answers, you move on. The scanner that respects robots.txt reports manifest found, handshake failed, and you conclude the scanner is broken.

User-agent: GPTBot
Allow: /api/mcp
Allow: /.well-known/
Disallow: /api/
The fix: longest match wins, and Allow breaks the tie

Repeat it in each user-agent group you maintain. Our discovery check reads the manifest, extracts the URL it points at, and evaluates that path against your own robots.txt — which is how it catches this specific contradiction rather than just reporting that a file exists.

Two more things that quietly break discovery

  • A soft 404. Many frameworks serve a styled error page with status 200 for unknown paths. A probe then sees a 200 and HTML, which is not a discovery document. We check the content type for exactly this reason.
  • A manifest that does not match reality. A card advertising streamable-http at a URL that only accepts a different transport, or a version that moved on. If the handshake fails, the card is worse than absent — it sends agents to a dead end.

How we grade it

3 points in the interop pillar. Any responding discovery document passes. A document whose target path is disallowed by your own robots.txt scores partial, with the offending path named in the evidence. Nothing responding is a fail — and for a site with no API and no server, that is a fair thing to lose two or three points on rather than a crisis.

Sources

Primary documents, checked on 27 August 2026

  1. modelcontextprotocol.io
  2. RFC 9727 — API Catalog
  3. RFC 8414 — OAuth authorization server metadata
  4. RFC 9728 — OAuth protected resource metadata
  5. RFC 8615 — well-known URIs
  6. RFC 9309 — Robots Exclusion ProtocolLongest-match precedence used by the fix above

Keep reading

Check your own site against this

The Agent Readiness Score measures exactly what this article describes, and shows the evidence behind every finding.

Run the check →