DocsCapabilitiesNLWeb endpoint
NLWeb endpoint
Microsoft's conversational /ask route returning schema.org answers.
Why an agent cares
It lets an agent ask the site a question in natural language and get structured data back, instead of crawling for it. Cite the repo-hosted spec: nlweb.ai serves a TLS certificate issued for another host, so the canonical URL is unfetchable.
Adoption
Early pilots. Named early adopters exist, behind flags or trials. Nothing has been independently measured yet.
Direction of travel: ▼ receding, as at .
The May 2025 launch-partner list is still the whole story, and the reference implementation has never shipped a tagged release. Development has gone quiet with it: no substantive change since June 2026, against 65 open issues.
| Adopter | Depth | Evidence |
|---|---|---|
| Tripadvisor (internal frontend, not a public /ask endpoint) | production | techcommunity.microsoft.com |
| O'Reilly Media | production | oreilly.com |
| Shopify, Snowflake, Eventbrite, Hearst | announced | github.com |
What we check
| Check | Severity | Raises | On whose authority |
|---|---|---|---|
| NLWeb REST (/ask) Error Response | high | usability | Lumar readiness bar, beyond NLWeb specification |
Supporting documents: NLWeb specification Lumar readiness bar: no specification requires this. Bad: /ask answered an anonymous query with an HTTP error, so an agent that discovers the endpoint gets an error reply (a refusal, a throttle, a failure) instead of a usable result (an application "no results"/failure at HTTP 200 is valid, not flagged). Fix: the repair depends on the status, which the Findings column names: 401/403 means answer anonymous queries or publish how an agent authenticates, 429 means let occasional anonymous queries through, and send Retry-After if you do not already, any other error means answer with HTTP 200 and an NLWeb response body. | |||
| NLWeb REST (/ask) Malformed Response | high | usability | vendor profile: NLWeb specification |
Supporting documents: NLWeb specification Related guidance in NLWeb specification. Bad: /ask answered, but an agent can't read the answer. Either a streamed SSE frame isn't valid JSON, or the v0.55 envelope is broken: a _meta.response_type outside the four defined values (answer, elicitation, promise, failure — the value is case-sensitive), a missing _meta.version, or a member missing or malformed (an answer with no results/structuredData, a promise with no promise.token, a failure with no error.code, an elicitation question without its id/text/type). A member v0.55 marks optional counts here when it is present with the wrong shape (elicitation.text that isn't a string, questions that isn't an array of question objects): optional licenses omitting it, not breaking it. Fix: emit each streamed event as one complete JSON object, and send a v0.55-defined response_type with _meta.version and members that are complete and well-formed; the Findings column says which applies, including both when a response manages both. | |||
| NLWeb MCP (/mcp) Ask Tool Missing Description | high | usability | vendor profile: NLWeb specification |
Supporting documents: NLWeb specification Related guidance in NLWeb specification. Bad: the ask tool has no description, so an agent can't tell what it does or when to call it. Fix: give the tool a description, e.g. "Ask a natural-language question about this site's content". | |||
| NLWeb MCP (/mcp) Ask Tool Missing Query Input | high | usability | vendor profile: NLWeb specification |
Supporting documents: NLWeb specification Related guidance in NLWeb specification. Bad: the ask tool's inputSchema declares no usable "query" property, so agents can't tell how to pass the question. Fix: declare inputSchema with a string "query" property (v0.55's query.text shape also counts). | |||
| NLWeb REST (/ask) Missing Schema.org | informational | nothing | vendor profile: NLWeb specification |
Supporting documents: NLWeb specification NLWeb specification permits this, so it never fails the site. Informational (does not fail nlWebRestValid): /ask returned result items but none carries Schema.org typing, which the spec recommends rather than requires. Consider attaching a schema.org object per result so agents get structured data, not prose. | |||
Specifications
| Document | Revision | Kind |
|---|---|---|
| NLWeb specification | Version 0.55 | specification |
| NLWeb REST API (/ask, /mcp) | Living document | specification |
| NLWeb project | Living document | guidance |
Last re-read against the published documents: .