Repository navigation
v0.9.44
Error-honesty and listing release. Scraper HTTP failures now come back as structured errors on both the npm package and mcp.novada.com, and the package/registry listing carries the new one-line description.
Changed (npm package)
- New package description and MCP Registry listing.
package.jsonandserver.jsonnow read "One MCP server for all web data. Scrape, search, crawl, and AI research in one install.";server.jsonaddstitle("Novada MCP") andwebsiteUrl. The registry description is generated byscripts/gen-server-json.mjs, so the change lives there.
Fixed
novada_scrapeHTTP errors (429/5xx) from the submit and result-retrieval steps are now structured, honest errors instead of a plain, unclassified string.scrape.ts's submit/poll catch blocks now classify an AxiosError with a real HTTP response through the sharedclassifyError()/classifyScraperHttpError()taxonomy (429 →RATE_LIMITEDwith retry guidance; 402/11006 →PRODUCT_UNAVAILABLE; 5xx →API_DOWN; 401 →INVALID_API_KEY; 403 → transientAPI_DOWNat both steps — previously only at submit, so a result-step 403 was reported as a permanent unknown error) at the throw site, with resume-by-task_idguidance when a task already exists. Root cause: the hosted gateway (hosted-server/vercel/api/mcp.ts) never calledclassifyError()on a thrown plainError— only the npm-package's local stdio dispatch did — so a 429 from the result-retrieval step reached hosted callers as a bare"Tool error: Failed to retrieve scraper results: Request failed with status code 429"with no code, failure class, oragent_instruction.mcp.ts's generic error fallback now routes through the SAMEclassifyError()the stdio dispatch already uses, fixing this class of gap for every tool, not justnovada_scrape.- Nightly canary's
NO_LYING_ZERO(invariant 3) upstream-signal recognizer now includes 429/rate-limit (hosted-server/scripts/contract/contract-test.py) — it already promised "Upstream flakiness (timeout, backend error, rate-limit) → SKIP" in its own docstring but never implemented the rate-limit case. Covered by two new--self-testscenarios ((h)/(i), a mirror pair).
Fixed (hosted deploy tooling — not part of the npm package)
deploy-hosted.shrecords the real rollback target. It used to print the deployment it had just shipped as the "rollback target"; it now reads the deployment servingmcp.novada.combefore deploying. Its live-version probe now sends theAcceptheader Streamable HTTP requires (it previously always printedUNKNOWN).