Release v3.1
Notes
WDS v3.1 makes collected pages easier to inspect and recurring crawls easier to manage. Browse downloaded content as HTML or Markdown, use job evaluation paths to find the entry pages, and bound completed-run history with Traversal retention. New Solidstack all-in-one images bundle MongoDB, with optional full-text search and local embeddings.
Upgrade the server services together: internal gRPC contracts changed. The REST API remains /api/v3. Review the polling-route and cache-storage changes below before upgrading. The MCP server now uses stateless Streamable HTTP.
MaxRuns limits run history rather than total storage; cached payloads and identifier records can remain. Delete Job can also leave download and cache state in this release.
Breaking Changes
API
- Crawl and scrape result polling moves from
GET /tasks/{taskId}/crawl-resultandGET /tasks/{taskId}/scrape-resultto GET on/crawland/scrape. Initial requests remain POST operations. Follow theLocationheader after202 Accepted. - A successful Fetch now explicitly returns raw
text/html. Clients expecting a JSON-encoded string must read the response as text. The task content polling endpoint still returns a JSON ContentChunk.
MCP
- Streamable HTTP is stateless. Clients must not depend on a persistent server-side MCP session or a session ID across requests.
MSSQL
- Direct callers of the MSSQL-compatible REST API must poll with
GET /api/mssql/v3/tasks/{taskId}/crawlor/scrape; thecrawl-resultandscrape-resultroutes are removed. The SQL CLR transport follows the returnedLocationautomatically, so installed SQL function signatures are unchanged.
Added
API
- Job Content:
GET /jobs/{jobName}/content/{path}reads existing download tasks as.htmlor.md, with links rewritten under the job content route. The path extension selects the format; reading can initiate or resume downloading for an existing task. - JobInfo.EvaluationUrls supplies server-relative HTML and Markdown entry paths for configured start URLs that already have task records.
-
Root TraversalConfig.MaxRuns accepts a positive retention limit. Before a new run starts, older completed runs and their Traversal tasks are pruned, with cleanup requested for download tasks unreferenced by other runs. Omitted or null keeps all runs.
- Solidstack AIO, AIO FTS, and AIO FTVS bundle MongoDB; FTS adds MongoDB Atlas Local search, and FTVS also includes Ollama with a preloaded
embeddinggemmamodel. Regular AIO images targetlinux/amd64andlinux/arm64. - Standard service images now have regular and
-fipsdistributions. Regular images use the Docker Hardened Images runtime; FIPS images use the Red Hat UBI .NET runtime and targetlinux/amd64.
MCP
- WdsGetJobs returns the expanded
JobInfocontract withEvaluationUrlsfor inspection through the REST content endpoint. - WdsUpsertTraversalConfig accepts root-level
MaxRuns; retention applies when a subsequent run starts, including scheduled runs.
MSSQL
No new installed SQL functions or UDTs.
Changed
API
- New S3 cache object keys include the job ID. Reads fall back to the v3.0 tenant-based layout when the new key is missing, so existing objects remain readable without migration.
- Idealer source hashing and Solidstack’s in-process hashing are configurable through
SOURCE_HASH_MODE:FullLength,Sha512, orRaw.Sha512stores fixed-size source hashes. The default remainsFullLength. Changing modes on a populated database changes lookup keys and can allocate different IDs; no automatic migration is provided. - Request tracing includes
TraceIdin ASP.NET request logs and preserves a supplied nonblankX-Trace-Id, generating one otherwise. - Retention cleanup removes unshared scraped-data references and retrieval bundles while preserving data still referenced elsewhere. Storage cleanup has the limitations noted above.
- Download status distinguishes reset tasks with an existing download-result record (
Created) from previously completed tasks whose result record was removed (Deleted). These states do not indicate whether cached page payloads remain.
MCP
- The server identifies itself as
WDS MCP Serverand reports the application assembly version. - TraversalInfo.Config and child branches use TraversalConfigBase. Run snapshots contain the traversal plan; job-level
MaxRunsis read from the saved root configuration. - WdsGetDownloadTaskStatus reflects the reset-versus-deleted task-state distinction described above.
MSSQL
- Server-side task polling uses the updated routes while preserving the installed CLR function and UDT surface. Download-status fixes also apply to TaskStatus.
Removed
API
- The separate
crawl-resultandscrape-resultroutes. Use GET on/crawland/scrape.
MCP
No tools or prompts removed.
MSSQL
- The MSSQL-compatible REST
crawl-resultandscrape-resultpolling routes. No installed SQL functions or UDTs removed.