keirouter-web-fetch

keirouter-web-fetch is a skill for Claude Code, Codex from mydisha/keirouter. It costs 63 tokens per session (895 once invoked), scanned A, a copy of 9router-web-fetch, MIT.

Instructions for fetching a webpage and converting it to Markdown, plain text, or HTML through KeiRouter. KeiRouter can route the request to web-extraction services such as Firecrawl, Jina Reader, Tavily, or Exa.

In plain words
What is it for?
Use them to scrape a URL, read an online article, or obtain webpage content for further processing.
Why use it?
They provide a standard way to extract readable webpage content when a page is difficult to process directly.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use them to scrape a URL, read an online article, or obtain webpage content for further processing.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/mydisha/keirouter/keirouter-web-fetch
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add mydisha/keirouter --skill keirouter-web-fetch
Clone the repo
git clone --depth 1 https://github.com/mydisha/keirouter

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for keirouter-web-fetch

README.md
[![agentmods](https://agentmods.dev/badge/skills/mydisha/keirouter/keirouter-web-fetch.svg)](https://agentmods.dev/skills/mydisha/keirouter/keirouter-web-fetch)
Your own site
<a href="https://agentmods.dev/skills/mydisha/keirouter/keirouter-web-fetch"><img src="https://agentmods.dev/badge/skills/mydisha/keirouter/keirouter-web-fetch.svg" alt="Measured on agentmods" height="20"></a>
Per session 63 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 895 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin 86% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00063 $0.00895
Opus 5 $0.00032 $0.00447
Sonnet 5 $0.00013 $0.00179
Haiku 4.5 $0.00006 $0.00089

Measured 8d ago against content hash a2004f669c02, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade A, and why

keirouter-web-fetch scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

curl $KEIROUTER_URL/v1/models/web | jq '.data[] | select(.kind=="webFetch") | .id'
Origin

This is a copy

86% identical to 9router-web-fetch — 60 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

skills/keirouter-web-fetch/SKILL.md · 91 lines

How it starts

The opening of the file, as written. The whole thing — 91 lines — stays where its author put it; the contents beside it link to each section on GitHub.

KeiRouter — Web Fetch

Requires KEIROUTER_URL (and KEIROUTER_KEY if auth enabled). See https://raw.githubusercontent.com/mydisha/keirouter/main/skills/keirouter/SKILL.md for setup.

Discover

curl $KEIROUTER_URL/v1/models/web | jq '.data[] | select(.kind=="webFetch") | .id'
# Per-provider params
curl "$KEIROUTER_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 $KEIROUTER_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 $KEIROUTER_URL/v1/web/fetch \
  -H "Authorization: Bearer $KEIROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"jina-reader","url":"https://example.com","format":"markdown"}'

Firecrawl

curl -X POST $KEIROUTER_URL/v1/web/fetch \
  -H "Authorization: Bearer $KEIROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"firecrawl","url":"https://example.com","format":"markdown","max_characters":0}'

Tavily

curl -X POST $KEIROUTER_URL/v1/web/fetch \
  -H "Authorization: Bearer $KEIROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"tavily","url":"https://example.com","format":"markdown","max_characters":0}'

JS:

const r = await fetch(`${process.env.KEIROUTER_URL}/v1/web/fetch`, {
  method: "POST",
  headers: { "Authorization": `Bearer ${process.env.KEIROUTER_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ model: "jina-reader", 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 },
  "metadata": { "author": null, "published_at": null, "language": null },
  "usage": { "fetch_cost_usd": 0 },
  "metrics": { "response_time_ms": 850, "upstream_latency_ms": 700 }
}

Read the full file on GitHub · 91 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 91 lines · 63 tokens per session scan A a2004f669c02

Subscribe to this mod's changes

keirouter-web-fetch is a skill published in the GitHub repository mydisha/keirouter (133 stars, last pushed today), licensed MIT. It adds 63 tokens to every session and 895 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). It is 86% identical to 9router-web-fetch, differing in 60 lines, and is treated as a copy.