9router-web-fetch
Fetch URL → markdown / text / HTML via 9Router /v1/web/fetch using Ollama Cloud / Firecrawl / Jina Reader / Tavily Extract / Exa Contents. Use when the user wants to scrape a webpage, extract URL content, read article, or convert a URL to markdown.
How do I install this agent skill?
npx skills add https://github.com/decolua/9router --skill 9router-web-fetchIs this agent skill safe to install?
- Gen Agent Trust Hubpass
This skill enables an AI agent to fetch and process content from web URLs using the 9Router API. It follows standard security practices by using environment variables for API authentication. As with any tool that retrieves external content, it carries an inherent risk of indirect prompt injection if the fetched websites contain malicious instructions.
- Socketwarn
1 alert: gptAnomaly
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
9Router — Web Fetch
Requires NINEROUTER_URL (and NINEROUTER_KEY if auth enabled). See https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md for setup.
Discover
curl $NINEROUTER_URL/v1/models/web | jq '.data[] | select(.kind=="webFetch") | .id'
# Per-provider params
curl "$NINEROUTER_URL/v1/models/info?id=firecrawl/fetch"
IDs end in /fetch (e.g. firecrawl/fetch, jina/fetch). fetch-combo chains providers with auto-fallback.
Endpoint
POST $NINEROUTER_URL/v1/web/fetch
| Field | Required | Notes |
|---|---|---|
model (or provider) | yes | from /v1/models/web (e.g. firecrawl or jina-reader) |
url | yes | URL to extract |
format | no | markdown (default) / text / html |
max_characters | no | truncate output |
Examples
Jina Reader
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"jina-reader","url":"https://9router.com","format":"markdown"}'
Exa
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"exa","url":"https://example.com","format":"markdown","max_characters":0}'
Firecrawl
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"firecrawl","url":"https://example.com","format":"markdown","max_characters":0}'
Tavily
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"tavily","url":"https://example.com","format":"markdown","max_characters":0}'
Ollama Cloud
Uses the API key from the existing ollama connection.
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"ollama","url":"https://example.com","format":"markdown"}'
JS:
const r = await fetch(`${process.env.NINEROUTER_URL}/v1/web/fetch`, {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.NINEROUTER_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ model: "fetch-combo", url: "https://example.com", format: "markdown", max_characters: 5000 }),
});
const { data } = await r.json();
console.log(data.title, data.content.length);
Response shape
{
"provider": "jina-reader",
"url": "...",
"title": "...",
"content": { "format": "markdown", "text": "...", "length": 1234 },
"links": ["https://example.com/related"],
"metadata": { "author": null, "published_at": null, "language": null },
"usage": { "fetch_cost_usd": 0 },
"metrics": { "response_time_ms": 850, "upstream_latency_ms": 700 }
}
links is included when the upstream provider returns discovered page links (currently Ollama Cloud).
Provider quirks
| Provider | Auth | Best for |
|---|---|---|
firecrawl | Bearer | JS-rendered pages, format=markdown/html |
jina-reader | Bearer (optional) | Free tier (~1M chars/mo); fastest plain markdown |
tavily | Bearer | Bulk extract; returns raw_content |
exa | x-api-key | Pre-indexed pages; fast text extraction |
ollama | Bearer | Markdown plus page title and discovered links; uses the Ollama Cloud key |
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/decolua/9router/9router-web-fetch">View 9router-web-fetch on skillZs</a>