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

storefront-guard-mcp-server

v0.3.2

Published

Agent-side merchant verification: checks whether a storefront a shopping agent is about to pay looks like the same legitimate entity it was recently, before the agent commits payment.

Readme

storefront-guard-mcp-server

Agent-side merchant verification. A shopping agent calls verify_storefront with a domain before paying, and gets back a trust score built from free public data sources.

This is the mirror image of merchant-side agent-verification protocols like Visa's Trusted Agent Protocol: those let a merchant confirm an incoming agent is legitimate. This tool lets the agent confirm the merchant is legitimate before committing payment.

What it checks

  • Domain registration age & recent changes — via free public RDAP lookups. A domain registered days ago, or one whose registration data changed in the last two weeks, is a red flag.
  • SSL certificate issuance history — via free public Certificate Transparency logs (crt.sh). A cert reissued very recently on an otherwise long-established domain can indicate a takeover or hosting change, even when the domain itself looks old and trustworthy.
  • HTTPS validity — does the site currently serve a valid cert at all.
  • Known-scam blocklist — URLhaus and Google Safe Browsing.
  • Corporate registration — US entity lookup via OpenCorporates.
  • Legal name verification — GLEIF entity registry cross-check.
  • Web traffic rank — Tranco top-1M ranking.
  • Federal exclusions — SAM.gov debarment check.
  • FDA enforcement — corroborating signal when other risks are present.

Every deduction from the trust score comes with a plain-English reason in the reasons array — this is deliberately an explainable heuristic, not a black-box model.

Setup

Requires Node.js 18+.

npm install
npm run build

Copy .env.example to .env and fill in your keys.

Running it

As a local MCP server (stdio):

npm start

As a remote MCP server (streamable HTTP) with x402 payment:

npm run start:http
# POST http://localhost:3000/mcp

As a pay-per-call x402 HTTP API:

npm run start:x402
# POST http://localhost:4021/verify   { "domain": "example-shop.com" }

As a REST API (API key auth):

npm run start:rest
# POST http://localhost:4022/verify   { "domain": "example-shop.com" }
# Header: X-API-KEY: your-key

All three servers at once:

npm run start:all
# MCP:  http://localhost:3000/mcp
# x402: http://localhost:4021/verify
# REST: http://localhost:4022/verify

Feedback endpoint

Submit outcome data after a transaction to help build training data for future ML scoring:

POST http://localhost:4022/feedback
Header: X-API-KEY: your-key
Body: { "domain": "example-shop.com", "outcome": "legit" | "scam" }

How to use the recommendation field

Every verification result includes a top-level recommendation string alongside the numeric trustScore. Agents should branch on it rather than implementing their own threshold logic against the raw score.

| Value | Suggested agent behavior | |---|---| | proceed | Complete the transaction silently. Trust score is low-risk with high confidence. | | pause_for_confirmation | Stop before paying and show recommendationReason to the user. | | do_not_proceed | Block the transaction and actively notify the user — do not fail silently. |

recommendationReason is a one-line plain-English explanation safe to show directly to users.

Pricing

$0.01/call via x402. Set your wallet address in PAY_TO_ADDRESS and network in X402_NETWORK (default: base).

Environment variables

| Variable | Required | Description | |---|---|---| | PAY_TO_ADDRESS | Yes (x402) | Your wallet address for USDC payments | | X402_NETWORK | No | Blockchain network (default: base) | | PRICE_USD | No | Per-call price (default: 0.01) | | API_KEYS | Yes (REST) | Comma-separated valid API keys | | GOOGLE_SAFE_BROWSING_API_KEY | No | Degrades gracefully if unset | | SAM_GOV_API_KEY | No | Degrades gracefully if unset | | URLHAUS_AUTH_KEY | No | Degrades gracefully if unset | | FEEDBACK_LOG | No | Path for feedback JSONL log (default: feedback.jsonl) | | MCP_PORT | No | MCP server port (default: 3000) | | X402_PORT | No | x402 server port (default: 4021) | | REST_PORT | No | REST API port (default: 4022) |