Scan at scaleSites with a broken NLWeb /ask endpoint
Sites with a broken NLWeb /ask endpoint
A site-wide report: one row per host, over the nlweb rows the crawl emitted.
What this report returns
NLWeb's REST /ask endpoint lets agents query a site in natural language and get structured results back.
These sites' /ask responded, but an agent gets no usable result out of it, for one or more of three reasons. It answered an anonymous query with an HTTP error status, so the reply carries a refusal, a throttle or a failure rather than results. Or a streamed SSE data frame isn't valid JSON, so whatever that frame carried is lost to any agent reading the stream.
Or its v0.55 envelope doesn't hold together: a _meta.response_type outside the four defined values (answer, elicitation, promise, failure, 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), so the answer can't be parsed.
An optional member counts when it is present with the wrong shape, because optional licenses omitting it rather than breaking it. The Findings column names which of these fired, and a single response can manage more than one.
How to fix it. 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, per the NLWeb specification (v0.55). For an error status, read the status in Findings first, because v0.55 counts 401 and 429 among the appropriate ones, so returning 200 is not the repair there: a 401 or 403 means answering anonymous queries or publishing how an agent authenticates, while a 429 means letting occasional anonymous queries through, and adding Retry-After if the response doesn't already carry one.
Any other error status does mean answering with HTTP 200 and an NLWeb response body. (Missing Schema.org typing on results is shown for context only: the spec recommends it rather than requiring it, so it doesn't make the endpoint invalid.)
The columns it shows
Every defect this technology can carry is a column in the grid, worst first, so nothing is hidden behind a filter you have to know to apply.
- Host
host - NLWeb REST (/ask) Valid
nlWebRestValid - NLWeb REST Findings
nlWebRestFindings - NLWeb REST (/ask) Error Response
nlWebRestErrorResponse - NLWeb REST (/ask) Malformed Response
nlWebRestMalformedResponse - NLWeb REST (/ask) Missing Schema.org
nlWebRestMissingSchemaOrg
About NLWeb endpoint
Microsoft's conversational /ask route returning schema.org answers.
Read how NLWeb endpoint is checked, including the specification it is validated against and a worked correct and broken example.
Running it
This report ships in the Lumar agent-readiness container and appears on any project it is linked to, on every crawl. See the whole set, or check a single URL with the scanner on this site, which runs the same code with no account.