MCP endpoint functional
What it checks
One MCP endpoint audit, over one connection: find the endpoint the site declares, speak a spec-compliant initialize handshake to it, read the capabilities the server negotiates on the wire, and read the annotations off the tools it actually lists.
| State | Result |
|---|---|
valid JSON-RPC initialize result, at least one negotiated capability, and — when tools is negotiated — every listed tool carrying a boolean readOnlyHint |
pass |
HTTP 401 with a WWW-Authenticate challenge — a correctly protected server, not a broken one |
pass (with note) |
valid handshake but no negotiated capability, or some listed tools missing a boolean readOnlyHint, or HTTP 200 whose body is not JSON-RPC |
warn, priority high |
no endpoint declared anywhere, malformed servers.json, an endpoint that is not safe to probe, another non-200, or unreachable |
fail, priority high |
tools/list is only called when the server negotiates the tools capability, and a tools/list that does not answer is reported, never punished.
Why it matters
Deploying an NLWeb instance (exposing /ask and an MCP endpoint over the site’s existing schema.org/RSS data) makes the site’s content queryable in natural language by agents.
Evidence
nlweb-endpoint
NLWeb is a real, still-active project with unusually credible named adopters. Microsoft’s launch announcement (2025-05-19, Build 2025) states that ‘Every NLWeb instance is also a Model Context Protocol (MCP) server, allowing websites to make their content discoverable and accessible to agents’. It adds that NLWeb ‘leverages semi-structured formats like Schema.org, RSS and other data that websites already publish.’ The named early adopters are Shopify, Snowflake, Tripadvisor, Eventbrite, O’Reilly Media, Hearst (Delish), Chicago Public Media, Common Sense Media, DDM (Allrecipes/Serious Eats), Milvus, Qdrant and Inception Labs. The reference implementation has 6,249 stars and was pushed 2026-08-11, with satellite projects (nlweb-net, MSR-Web-Verbs, crawler) — so it is alive, and its schema.org dependency makes it a natural companion to structured-data audits.
Limits
Governance has drifted: the canonical repo is no longer microsoft/NLWeb — api.github.com/repos/microsoft/NLWeb returns HTTP 301 redirecting to the nlweb-ai org — so it is no longer a Microsoft-org project even though support still routes to NLWebSup@microsoft.com. Critically for an audit, there is no discovery mechanism. nlweb is not in the IANA Well-Known URIs registry, and the README defines no .well-known path. Endpoint paths such as /ask and /mcp are deployment choices.
A scanner cannot reliably detect an NLWeb deployment without guessing. Probing /mcp is actively unreliable — github.com, linear.app, vercel.com and zapier.com all return HTTP 200 text/html at /mcp (marketing pages, not endpoints). Wikipedia’s entry is a stub with no adoption figures, and no independent dataset measures NLWeb deployment. Treat as informative and detect only via an explicitly declared endpoint (e.g. an ai-catalog entry), never by path guessing.
Sources
- Introducing NLWeb: Bringing conversational interfaces directly to the web — Microsoft, vendor-doc (verified 2026-08-20)
- NLWeb repository grep for HowTo — Microsoft / nlweb-ai, repo (verified 2026-08-20)
- IANA Well-Known URIs registry — IANA, spec (verified 2026-08-20)
- Live deployment: Cloudflare /.well-known/mcp.json — Cloudflare (probed by Agent Lighthouse research, 2026-08-20), dataset (verified 2026-08-20)