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.
A row appears here when any of these is wrong, worst first:
- Error Response
/askanswered an anonymous query with an HTTP error, so an agent gets a refusal, a throttle or a failure instead of a result (an application "no results" or failure sent with HTTP 200 is valid and not flagged).Fix It depends on the status the Findings column names: for 401 or 403, answer anonymous queries or publish how an agent signs in; for 429, let occasional anonymous queries through and sendRetry-After; for anything else, answer with HTTP 200 and an NLWeb response body. - Malformed Response
/askanswered, but an agent can't read the answer: a streamed frame isn't valid JSON, or the v0.55 envelope is broken (a_meta.response_typeother than answer, elicitation, promise or failure, matched case-sensitively; no_meta.version; or a member missing or in the wrong shape, such as an answer with no results).Fix Send each streamed event as one complete JSON object, with a v0.55response_type,_meta.versionand well-formed members; the Findings column names which part failed.
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.
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 comes with Agentic Readiness in Lumar and appears on every crawl of any project that has it turned on. See the whole set, or check a single URL with the scanner on this site, which runs the same code with no account.