ask-web-fetch-mcp 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f34204d8bcf16d483e5292a58672fd6011e3d7ed825b802beb07738c77a8ff1
4
- data.tar.gz: c65b7193404995255cba3aa906d88442a559d2dc17e88835d9ed72ad8ca41601
3
+ metadata.gz: 8ba4b67fe027c74b1e68b80af6cd6dc83479464c936f37bb558ce4b60c8811f3
4
+ data.tar.gz: 86f9bf7f1bab0e3d7678a966259af096593bb665d30d4abcd3121085051f891c
5
5
  SHA512:
6
- metadata.gz: ad9196aa7fc0a8c19def71913eb8d69cc656ea01ea8ac218f20d973709a66eb51cda0017d9d2e2b492d813d4669d27fa8857f77136c0588d4845694766b660ba
7
- data.tar.gz: 2c9dafac6c69c6cc699d721abdabaa86c013700a64a3548b9fc9b3b32de353a624694e3a2c22ad72078456f2b4d7ff8428653f6b76381e70e9591ad044a1ec50
6
+ metadata.gz: da671bda628d54eeb7cf60e573d5317c568516f16d3c547e48d6f8c813697f9ff9f3442c0578ad4dd360f6e08c9d0faac466710d1f32c882f2db736874f486ca
7
+ data.tar.gz: 8c53d1f55dc8dbc661538b65b3e1e76ac65121c6edcb6c57c94d28a87ecfc328ad5940a595ee452724f987497fdd8c32277a61a21238f7a6c03bd6eeae3e1ac0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## [0.5.0] — 2026-08-12
2
+
3
+ ### Changed
4
+
5
+ - `ask-web-fetch` floor raised to `>= 0.6.1`. The server exposes the tool
6
+ unchanged, but `ask_web_fetch` now answers with the full current stack:
7
+ the pooled-httpx transport (no more hangs on multi-host crawls), real
8
+ network-idle waits in CDP-attached mode, JS-app-shell detection that
9
+ fails client-rendered pages through to a rendering backend, parked-domain
10
+ detection on every backend (GoDaddy/Namecheap registrar ads are rejected,
11
+ never returned as content), and warm-and-retry challenge handling.
12
+ - **Failure verdicts are now classed.** When every backend fails, the tool
13
+ raises the most definitive class — `ParkedDomainError` beats
14
+ `EmptyContentError` beats a deterministic `FetchError` (every backend
15
+ failed dead), and any transient failure in the mix keeps the retryable
16
+ base `Error`. A client calling `ask_web_fetch` on a parked domain gets
17
+ an error naming `ParkedDomainError` instead of a generic failure, so it
18
+ stops retrying the unretryable. The message still lists every backend
19
+ and what it said.
20
+
1
21
  ## [0.4.1] — 2026-08-11
2
22
 
3
23
  ### Changed
data/README.md CHANGED
@@ -5,9 +5,10 @@
5
5
  A minimal MCP (Model Context Protocol) server that exposes
6
6
  `Ask::Tools::WebFetch` as a callable tool over stdio. Designed for use with
7
7
  clients that support MCP (ZCode, Claude Code, etc.), it fetches a URL and
8
- returns clean markdown for LLM consumption — via the local pure-Ruby backend
9
- by default, with an automatic Jina Reader fallback for JS-rendered or blocked
10
- pages.
8
+ returns clean markdown for LLM consumption — through the full ask-web-fetch
9
+ backend chain: the fast pure-Ruby httpx fetch first, Jina Reader and
10
+ self-hosted Crawl4AI in between, and a real Chrome (launched, or attached
11
+ over CDP) last for JS-rendered and challenge-gated pages.
11
12
 
12
13
  ## Installation
13
14
 
@@ -56,9 +57,23 @@ collisions with client-side tools of the same name, matching
56
57
  The `ask-web-fetch` backend chain applies unchanged. Optional environment
57
58
  variables:
58
59
 
60
+ - `ASK_WEB_FETCH_CDP_URL` — CDP endpoint of an already-running Chrome
61
+ (e.g. `http://127.0.0.1:9222`); routes challenge-gated pages through a
62
+ trusted browser that has already solved them
63
+ - `ASK_WEB_FETCH_CHROME_PATH` / `ASK_WEB_FETCH_PROFILE` — tune the
64
+ launched-browser mode (binary path, persistent profile for solved
65
+ cookies)
66
+ - `CRAWL4AI_URL` / `CRAWL4AI_TOKEN` — lead the chain with a self-hosted
67
+ Crawl4AI renderer (`http://localhost:11235` when unset)
59
68
  - `JINA_API_KEY` — enables the Jina fallback with higher rate limits
60
69
  - `DEBUG=1` — ask-mcp debug logging on stderr
61
70
 
71
+ When every backend fails, the error names the verdict class: terminal
72
+ outcomes — a parked domain (`ParkedDomainError`), a page with no usable
73
+ content (`EmptyContentError`), a dead URL (`FetchError`) — are never
74
+ retryable; transient failures (timeouts, 5xx) raise the base
75
+ `Ask::WebFetch::Error`.
76
+
62
77
  ## Full documentation
63
78
 
64
79
  The full ask-rb documentation lives at https://ask-rb.github.io/ask-docs.
@@ -3,7 +3,7 @@
3
3
  module Ask
4
4
  module WebFetch
5
5
  module MCP
6
- VERSION = '0.4.1'
6
+ VERSION = '0.5.0'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ask-web-fetch-mcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaka Ruto
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.5.1
32
+ version: 0.6.1
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 0.5.1
39
+ version: 0.6.1
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: minitest
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -82,8 +82,12 @@ dependencies:
82
82
  description: |
83
83
  A minimal MCP (Model Context Protocol) server that exposes Ask::Tools::WebFetch
84
84
  as a callable tool over stdio. Designed for use with clients that support MCP
85
- (ZCode, Claude Code, etc.), it fetches a URL and returns clean markdown via the
86
- local pure-Ruby backend, with an automatic Jina Reader fallback.
85
+ (ZCode, Claude Code, etc.), it fetches a URL and returns clean markdown through
86
+ the ask-web-fetch backend chain fast pure-Ruby httpx fetch first, a real
87
+ Chrome (launched or CDP-attached) for JS-rendered and challenge-gated pages,
88
+ with Jina Reader and self-hosted Crawl4AI in between. Terminal failures
89
+ (parked domains, empty pages, dead 4xx) surface as their deterministic error
90
+ class, so clients never retry the unretryable.
87
91
  email:
88
92
  - kaka@myrrlabs.com
89
93
  executables: