Resource posts scatter good links,
then quietly rot.

Someone lists fifteen sites worth bookmarking. Two months later four links are dead, three were the same site under different names, and the coding agent that would actually use them cannot see any of it. sifter collapses those posts and bookmark folders into one index — deduplicated, liveness-checked, described in each site's own words, searchable by an agent over MCP.

Links rot, sites get renamed, the same tool shows up under three domains — and the agent that would use them can't see any of it. sifter collapses those posts into one index: deduplicated, liveness-checked, searchable over MCP.

Browse the index
Still loading. If this does not clear, the page's script did not run — tell us.

Why not just an awesome-list

An awesome-list is a text file edited by hand, so it goes stale in silence. Every line here is derived from a check that actually ran.

It merges what is the same thing

www.beautifului.dev and beautifului.dev are one entry. So are godly.website and recent.design — the first now redirects to the second, and that rename is caught on the next refresh. Both names stay searchable.

It doesn't lie about what's alive

Checking for HTTP 200 and calling the rest dead deletes working sites: two of the first nine links tested returned 403 purely because Cloudflare dislikes robots. blocked is its own verdict, distinct from both.

It separates the pitch from the fact

A post says "the best animated components". The site's own title says what it is and what it's built with. The index searches the second and keeps the first as provenance — so you can see what was claimed and what is true.

It counts corroboration

When the same site arrives from a post and from a bookmark folder, that is recorded. Independent people pointing at one thing is a better signal than a star count, and no hand-written list has it.


Give it to your agent

MCP — Claude Code, Cursor, any MCP client
{
  "mcpServers": {
    "sifter": {
      "command": "npx",
      "args": ["-y", "--package=@z10/sifter", "sifter-mcp"]
    }
  }
}

Four tools: search, list, get, and submit. With no local library configured it serves the index shipped in the package, so an agent has something useful before you collect anything.

CLI — collect your own
# pull every link out of a resource post
npx @z10/sifter add https://x.com/…/status/…

# import ONE named bookmark folder
npx @z10/sifter chrome --folder "Design"

# verify + pull each site's real metadata
npx @z10/sifter refresh

Bookmark import reads one folder you name and refuses to walk the tree — a bookmark bar is a design gallery sitting next to your employer's admin panel. Node 20+, zero dependencies, no API key.


Found something good?

Submissions are verified on your machine before they become anyone else's problem — privacy screen, liveness check, the site's own metadata, duplicate check. What reaches a maintainer is a verified record rather than a bare link.

npx @z10/sifter submit https://example.com \
  --note "what it gives you that the alternatives don't"