Fetch public web pages as Markdown through Jina Reader's https://r.jina.ai/<URL> endpoint.
URL Fit
- Best for articles, documentation, blogs, changelogs, and other mostly static public pages.
- Weak for JavaScript-heavy pages, login-gated content, and anti-bot sites such as Zhihu or Xiaohongshu.
- Use it as the first fast path when the task needs URL-to-Markdown content without browser state.
Invocation
Call fetch.py's async fetch(url: str) function with the original public URL:
result = await fetch("https://example.com/article")
Successful calls return:
{
"ok": True,
"url": "https://example.com/article",
"reader_url": "https://r.jina.ai/https://example.com/article",
"markdown": "...",
"metadata": {"title": "...", "fetched_at": "...", "status": 200},
}
Failure Modes
- Timeout, network errors, 4xx, and 5xx responses return
ok: falsewith a structuredreason. - Anti-bot refusals return
reason: jina_refusedandsuggest_fallback: fetch-crawl4ai. - Runtime callers should choose their own fallback instead of assuming this tool retries.
Limits
- Public Jina Reader availability and rate limits are upstream dependencies.
- Some sites block reader-style fetches or return degraded content.
- This skill does not execute JavaScript, click through consent flows, or authenticate.
Quality Bar
- Evidence items have non-empty title and url.
- No crash on empty or malformed API response.
- Source channel field matches the channel name.