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.
npx agentmods add skills/shidoyu/scout/fetchnpx skills add shidoyu/scout --skill fetchgit clone --depth 1 https://github.com/shidoyu/scoutWrote 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.
[](https://agentmods.dev/skills/shidoyu/scout/fetch)<a href="https://agentmods.dev/skills/shidoyu/scout/fetch"><img src="https://agentmods.dev/badge/skills/shidoyu/scout/fetch.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00054 | $0.02216 |
| Opus 5 | $0.00027 | $0.01108 |
| Sonnet 5 | $0.00011 | $0.00443 |
| Haiku 4.5 | $0.00005 | $0.00222 |
Grade A, and why
fetch scanned grade A with 0 findings 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 5d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 161 lines — stays where its author put it; the contents beside it link to each section on GitHub.
scout:fetch v1.0 — URL Content Retrieval
Purpose
Retrieve content from a URL and return it in an LLM-friendly format (Markdown / text). Automatically select the appropriate tool based on privacy sensitivity, protecting pages that should not be sent to external services.
Usage
Explicit invocation:
/scout:fetch URL
Delegation from scout:search: When the Execute/Assess steps need to deep-dive into URL content, follow this skill's workflow.
Privacy Classification
Before fetching, classify the URL's privacy level based on domain and context.
| Level | Definition | Examples |
|---|---|---|
| Public | Pages accessible to anyone | Blogs, news sites, official docs, GitHub public repos |
| Confidential | Non-public pages fetchable via fetch-page.py (local Playwright) | Internal wikis, admin panels, dashboards, BASIC auth sites |
| Authenticated | Pages accessible only via browser sessions (cookies). fetch-page.py cannot reach them | Post-OAuth pages (Google, Notion, Slack, etc.), SaaS settings |
Classification hints:
localhost,*.internal,*.local, corporate domains → Confidentialconsole.*,admin.*,dashboard.*, paths containing/settings,/admin→ Confidential- Paths containing
/api/→ Confidential (except public API docs ondocs.*ordeveloper.*subdomains) *.notion.so,*.slack.com,*.figma.com,*.atlassian.net,mail.google.com→ Authenticated- Known login wall → Try Confidential (fetch-page.py) first; reclassify as Authenticated on failure
- Unknown domain → Confidential (err on the safe side; classify as Public only when certain)
Retrieval Flow
Receive URL
↓
Classify privacy level
↓
Public (Jina MCP available = API key configured)
↓
Jina MCP (500 RPM)
├─ [402] → r.jina.ai (keyless) + notice 「⚠ Jina token limit reached — falling back to free tier (20/min). Top up: https://jina.ai/」
├─ [401] → r.jina.ai (keyless) + notice 「⚠ Jina API key rejected — falling back to free tier. Re-run setup: bash tools/setup.sh」
├─ [429/5xx/403/408/connection failure] → r.jina.ai (keyless) silently
└─ [OK] → done
※ If 402/401 already occurred in this session, skip MCP and omit notice
※ All r.jina.ai fallbacks share the same failure chain:
r.jina.ai fails → fetch-page.py (if installed) → WebFetch (direct) → report failure
Public (no Jina MCP = no API key)
↓
WebFetch via r.jina.ai (keyless, 20 RPM)
├─ [429] → fetch-page.py + notice
│ 「⚠ Jina rate limit hit (20/min). Free API key unlocks 500/min: https://jina.ai/?newKey」
├─ [other errors] → fetch-page.py silently
└─ [OK] → done
└─ [fetch-page.py fails or unavailable] → WebFetch (direct)
└─ [fails] → report failure
Confidential → fetch-page.py only → report failure (external APIs prohibited)
Authenticated → browser-control.py only → report failure
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.
- 5d ago First seen · 161 lines · 54 tokens per session scan A 88d6006b013e
fetch is a skill published in the GitHub repository shidoyu/scout (3 stars, last pushed 2mo ago), licensed MIT. It adds 54 tokens to every session and 2,216 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
Fetch a Reddit post URL via old.reddit.com HTML scraping — the .json API is blocked for unauthenticated requests since May 2026. Returns structured data: post metadata + nested comments (with depth) + unique external links categorized (github/reddit/external). Persists into capstore tables (reddit.posts, .comments…
review-pr-ultra
Heavyweight multi-agent adversarial PR review. Spawns 5 parallel specialist agents (correctness, security, performance, maintainability, completeness) then a verifier agent that challenges every finding. Only verified issues survive. Use for high-risk changes, security-sensitive areas, large diffs, or when the user…
review-pr
Single-pass PR review for code quality, maintainability and simplicity, potential issues, CI failures, test coverage, and adherence to project standards. Lighter than /review-pr-ultra. Use for routine reviews; use /review-pr-ultra for high-risk, security-sensitive, or large changes where deeper multi-agent analysis is…
web-access
Use this skill whenever the user needs to access information from the internet — searching for current information, fetching public web pages, browsing login-gated sites (微博/小红书/B站/飞书/Twitter), comparing products, researching topics, gathering documentation, or summarizing news. This skill orchestrates four…
keenable-web-search
Web search and research skill. Search the web for current, citable information — news, research papers, documentation, company and market research, fact-checking, and any page beyond the model's training data. Runs a bundled Python script (stdlib only, no API key, no install). NOT for local file operations or non-web…
searxng-web-search
Privacy-respecting web metasearch via the searxng-mcp MCP server. Use when the agent needs current, open-web results for a query and must NOT leak the query to a single tracking engine — SearXNG aggregates many engines (Google, Bing, DuckDuckGo, Wikipedia, …) behind one JSON tool. Use for general lookups…