Borrowing it
Nothing to install: this file belongs to quangdang46/openproxy. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/quangdang46/openproxy/main/.agents/skills/openproxy-web-fetch/SKILL.mdgit clone --depth 1 https://github.com/quangdang46/openproxyWrote 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/quangdang46/openproxy/openproxy-web-fetch)<a href="https://agentmods.dev/skills/quangdang46/openproxy/openproxy-web-fetch"><img src="https://agentmods.dev/badge/skills/quangdang46/openproxy/openproxy-web-fetch/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/quangdang46/openproxy/openproxy-web-fetch"><img src="https://agentmods.dev/badge/skills/quangdang46/openproxy/openproxy-web-fetch.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00093 | $0.04101 |
| Opus 5.5 | $0.00037 | $0.01640 |
| Sonnet 5.5 | $0.00019 | $0.00820 |
| Haiku 4.5 | $0.00009 | $0.00410 |
Grade A, and why
openproxy-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 29d 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.
3. Calling it — curl and the `openproxy` CLI How it starts
The opening of the file, as written. The whole thing — 315 lines — stays where its author put it; the contents beside it link to each section on GitHub.
openproxy — web fetch
POST /v1/web/fetch turns a URL into extracted text. It is the same router, the same
account-fallback loop, and the same combo machinery as /v1/chat/completions, aimed at
pages instead of prompts.
This skill covers:
- The one real path (
POST /v1/web/fetch) and the/v1/fetchthat only exists in metadata - Registering a fetch provider
- Calling it — curl and the
openproxyCLI - The request/response contract
- Combos and account fallback
- Verifications and failure modes
1 · The path — /v1/web/fetch, not /v1/fetch
The fetch route is POST /v1/web/fetch (src/server/api/web_fetch.rs:28-33, mounted at
src/server/api/mod.rs:114). GET /v1 advertises it correctly (src/server/api/mod.rs:459).
There is a real, confirmed discrepancy you should not fall into:
| Source | Value | Reality |
|---|---|---|
kind_endpoint("webFetch") — src/server/api/v1_models.rs:36 |
/v1/fetch |
404. No route is registered for it. |
Route table in src/server/api/web_fetch.rs:30 |
/v1/web/fetch |
The live path. |
GET /v1 index — src/server/api/mod.rs:459 |
/v1/web/fetch |
The live path. |
/v1/fetch appears in exactly two places in the tree: the kind_endpoint arm and the unit
test that pins it (v1_models.rs:1330, kind_endpoint_matches_9router). Nothing serves it.
$ curl -s -o /dev/null -w '%{http_code}\n' -X POST http://127.0.0.1:4623/v1/fetch \
-H 'content-type: application/json' -d '{"provider":"firecrawl","url":"https://example.com"}'
404
The wrong value surfaces as the endpoint field of GET /v1/models/info (v1_models.rs:889).
It is latent today, not user-visible: no catalog model id is literally fetch, so
catalog.find_model(provider, "fetch") returns None and the merge block that emits
endpoint is skipped. Do not rely on it either way — call /v1/web/fetch.
Two other path facts:
- Only
POSTandOPTIONSare routed.GET /v1/web/fetchreturns 405. - No
/v1/v1/web/fetchdouble-prefix alias exists for this route (unlike chat, embeddings, search, and the other media routes)./v1/web/fetchis the only spelling.
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.
- 29d ago First seen · 315 lines · 93 tokens per session scan A fec845bbfe14
openproxy-web-fetch is a skill published in the GitHub repository quangdang46/openproxy (29 stars, last pushed 5d ago), licensed MIT. It adds 93 tokens to every session and 4,101 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-29.
Other skills, from other repositories
implementing-api-schema-validation-security
Implement API schema validation using OpenAPI specifications and JSON Schema to enforce input/output contracts and prevent injection, data exposure, and mass assignment attacks.
keirouter-chat
Chat / code generation via KeiRouter using OpenAI /v1/chat/completions or Anthropic /v1/messages format with streaming + auto-fallback combos. Use when the user wants to ask an LLM, generate code, summarize text, or run prompts through KeiRouter.
keirouter-embeddings
Generate vector embeddings via KeiRouter /v1/embeddings using OpenAI / Mistral / Cohere / Voyage / NVIDIA / AWS Bedrock and other embedding models for RAG, semantic search, similarity. Use when the user wants embeddings, vectors, RAG, semantic search, or to embed text.
10router
Entry point for 10Router — local/remote AI gateway with OpenAI-compatible REST for chat, image, TTS, embeddings, web search, web fetch. Use when the user mentions 10Router, TENROUTERURL, or wants AI without writing provider boilerplate. This skill covers setup + indexes capability skills; fetch the relevant capability…
post-processing
Extract, analyze, and summarize simulation output data — pull spatial fields at specific timesteps, compute time-series trends and detect steady state, extract line profiles through the domain, generate statistical summaries and distributions, calculate derived quantities (gradients, fluxes, volume fractions…
linear-solvers
Select and configure linear solvers for Ax=b systems arising in numerical simulations — choose between direct (LU, Cholesky) and iterative (CG, GMRES, BiCGSTAB, MINRES) methods, analyze sparsity patterns and matrix conditioning, recommend preconditioners (AMG, ILU, IC), apply row/column scaling, and diagnose…