What is NLWeb?
NLWeb (“Natural Language Web”) is an open protocol for giving a website a conversational query interface. Instead of only serving HTML pages to browsers, an NLWeb-enabled site exposes an /ask endpoint that accepts a plain-language question and returns structured JSON answers grounded in that site’s own content. The specification is transport-agnostic but defines two HTTP endpoints: POST /ask for queries and POST /await for polling long-running asynchronous answers.
The goal, in Microsoft’s framing, is to let every website function like an AI app — queryable by humans through a chat box and by agents through a machine-native interface, from the same endpoint.
Who created NLWeb and why?
NLWeb was announced by Microsoft at Build 2025 and is led by R.V. Guha, the creator of RSS, RDF, and Schema.org. That lineage matters: rather than invent a new content vocabulary, NLWeb reuses the Schema.org structured data that millions of sites already publish. The bet is the same one that made RSS and Schema.org succeed — a thin, open convention on top of data the web already has, rather than a heavyweight new standard.
How does the /ask protocol work?
A client sends a JSON request to /ask containing a natural-language query and optional preferences. The response carries a required _meta block plus one of four result types:
- Answer— an array of typed, semi-structured JSON objects (recipes, articles, products), each ideally a Schema.org type.
- Elicitation— a structured follow-up question when the query is ambiguous.
- Promise— a token for an asynchronous result, polled later via
/await. - Failure— a documented error code such as
NO_RESULTSorRATE_LIMITED.
A mode preference controls post-processing — list returns raw matches, summarize asks the server to compose an answer over them. Setting streaming: true streams results over Server-Sent Events as they are found.
How does NLWeb use Schema.org?
Schema.org is NLWeb’s native data model. Result objects are expected to use Schema.org @type and @context fields (the JSON-LD pattern), so an answer about a recipe comes back as a Recipe, a restaurant as a Restaurant, and so on. The reference implementation ingests the structured data a site already exposes — via sitemaps and embedded JSON-LD — which means sites that already publish good Schema.org markup are most of the way to a useful NLWeb endpoint.
How does NLWeb relate to MCP?
Every NLWeb instance is also a Model Context Protocol (MCP) server. The ask and await operations map directly to MCP tools over JSON-RPC, so any MCP-compatible assistant can call an NLWeb site as a capability without a custom integration. This is also how discovery works in practice: NLWeb has no dedicated well-known file, so agents reach an /ask endpoint through the MCP ecosystem. If you’re weighing the two, see how MCP compares to A2A and agents.json.
How do I make my site NLWeb-ready?
Three moves, in order of leverage:
- Publish clean Schema.org structured data. It is the input NLWeb retrieves and the shape it returns. Good JSON-LD is the foundation, not an afterthought.
- Stand up an /ask endpoint. Self-host the open-source reference implementation, use a managed offering, or build a minimal endpoint over your own content and retrieval.
- Expose it as an MCP server. Wiring
askas an MCP tool is what makes the endpoint discoverable to the wider agent ecosystem.
NLWeb sits alongside the other agent-readiness signals — llms.txt, AGENTS.md, and protocol manifests. To see where your site stands today, run a full agent-readability scan.
Frequently asked questions
- What is NLWeb?
- NLWeb is an open protocol for adding a natural-language query interface to a website. A site implements an /ask endpoint that accepts a plain-English question and returns structured, Schema.org-typed JSON answers grounded in that site's own content — usable by both conversational UIs and AI agents.
- Who created NLWeb?
- NLWeb was introduced by Microsoft at Build 2025 and is led by R.V. Guha, the creator of RSS, RDF, and Schema.org. That lineage is deliberate: NLWeb reuses existing Schema.org structured data rather than inventing a new content vocabulary.
- Is NLWeb the same as MCP?
- No, but they are tightly linked. Every NLWeb instance is also a Model Context Protocol (MCP) server: the ask and await operations map directly to MCP tools. So any MCP-compatible assistant can call an NLWeb site without bespoke integration. MCP is the transport; NLWeb is the natural-language-search contract layered on top.
- Do I need a vector database to run NLWeb?
- Not necessarily. The protocol only defines the request/response contract — how you answer is up to you. Microsoft's reference implementation uses embeddings and a vector store for retrieval, but a small site can satisfy /ask with lexical search or even hand-written routing. Pick retrieval that fits your corpus size.
- How do agents discover a site's NLWeb endpoint?
- There is no dedicated discovery standard yet — no /.well-known/nlweb file. The specification only fixes the endpoint paths (/ask and /await). In practice discovery rides on MCP: because every NLWeb instance is an MCP server, MCP-aware agents find and call it through the MCP ecosystem.