npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@afetch/mcp

v0.0.1

Published

A better fetch for agents. Honest completeness, outline-first navigation, and provenance on every page it returns.

Readme

afetch

A better fetch for agents.

afetch is an MCP server that fetches a web page and hands it to your agent as clean, readable text — like every other fetch server. The difference is what it tells the agent about what it did.

On the name: afetch is to agents what ofetch is to apps. The resemblance is deliberate homage, not affiliation — afetch is an independent project and is not connected to unjs. The package ships as @afetch/mcp; the unscoped name is reserved by an unrelated package.

Why another fetch server

Today's fetch tools know things they don't say. They know they truncated the page. They know the page needed JavaScript and they got the shell. They know the text was written by a stranger on the open internet. None of that reaches the model, which then reasons confidently about a fragment it believes is whole.

afetch says all of it out loud.

Honest completeness. Every response reports what you got and what remains — 4,000 of 47,000 characters — instead of silently cutting at a default limit. An agent that knows it has part of a page behaves differently from one that thinks it has all of it.

Outline first. Along with the content, afetch returns the page's heading structure, so an agent can jump straight to the section it needs rather than paging through linearly. Cheaper in tokens, and better answers.

Concealment reporting. Web pages can carry text meant for your agent and hidden from you — zero-width characters, invisible Unicode, white-on-white text, commands tucked in HTML comments. afetch reports where a page hid something. It does not judge what the text means.

Provenance on every block. Content arrives labeled with where it came from and a notice that it is third-party data, not instructions from you — in the text itself, and in the response metadata, so the label survives whatever your client does with it.

Install

// in your MCP client config
{
  "mcpServers": {
    "afetch": { "command": "npx", "args": ["-y", "@afetch/mcp"] }
  }
}

Node 20+. No API key, no account, no hosted service. The fetch happens on your machine, over your connection, from your IP — nothing passes through us, because there is no us to pass through.

Who this is for

Anyone whose agent reads the open web and who would rather it be honest about what it got: developers running coding agents, and anyone working where sending every URL to a third-party scraping service is not an option.

Who it is not for. If you need JavaScript-heavy pages rendered by a real browser farm, large- scale crawling, or proxy rotation, use a hosted service — Firecrawl and Jina Reader are good at that and afetch does not try to be.

What this does not do

Labeling is not prevention. Marking text as untrusted tells a model where the text came from; it does not stop the model from obeying it. afetch reduces harm and improves what an agent knows. It is a seatbelt, not a force field, and anyone selling you a force field is selling something else.

Concealment detection is not attack detection. afetch reports text a page tried to hide, because hidden instruction-shaped text has no legitimate purpose. It does not attempt to judge whether visible text is malicious — that is a losing game, and a filter that catches most attacks is more dangerous than none, because it manufactures confidence.

Status

Early. The interface is not stable and the version number says so.

License

MIT © Daniel Ahn