Skip to main content
Glama
maxigirl123

storefront-guard-mcp-server

by maxigirl123

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.

Related MCP server: acuris-agent-guard

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)

Available Tools

1 tool
verify_storefrontVerify Storefront LegitimacyA
Read-only

Checks whether a merchant storefront looks like the same legitimate entity it appeared to be recently, BEFORE an agent commits payment to it.

This is the mirror image of merchant-side agent-verification protocols (e.g. 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 paying.

It does NOT guarantee a storefront is safe - it is a fast, explainable pre-purchase signal built from free public data sources (domain registration history via RDAP, SSL certificate issuance history via Certificate Transparency logs, HTTPS validity, and a known-scam-domain check). Treat a "high" risk result as a strong reason to pause and get human confirmation before paying, and a "low" risk result as one input among others, not a guarantee.

Args:

  • domain (string): the bare domain of the storefront to check, e.g. "example-shop.com"

Returns: { "domain": string, "trustScore": number, // 0-100, higher = more trustworthy "riskLevel": "low" | "medium" | "high" | "unknown", "confidence": "low" | "medium" | "high", // how many signals could actually be resolved "reasons": string[], // human-readable explanation for the score "recommendation": "proceed" | "pause_for_confirmation" | "do_not_proceed", "recommendationReason": string, // one-line explanation of why this recommendation was made "signals": { ...raw signal data for audit/debugging... }, "checkedAt": string // ISO timestamp - this is a point-in-time result, do not cache it }

Recommendation values and suggested agent behavior:

  • "proceed": trust score is high with high confidence — complete the transaction silently, no user confirmation needed

  • "pause_for_confirmation": score is borderline or confidence is insufficient — pause and show recommendationReason to the user before completing payment

  • "do_not_proceed": domain matched a scam list or trust score is critically low — block the transaction and actively notify the user (do not fail silently)

Examples:

  • Use when: an agent is about to submit payment to a storefront it found via search or a marketplace listing

  • Use when: comparing several candidate storefronts for the same product before choosing one to buy from

  • Don't use when: verifying a well-known, previously-transacted-with merchant on every single repeat purchase - reserve for new or unfamiliar storefronts, since results are not meant to be cached long-term but also aren't needed for every routine repeat transaction

Error Handling:

  • Never throws - if a data source is unreachable, the affected signal is returned as null and "confidence" drops accordingly rather than failing the call

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe bare domain of the storefront to verify, e.g. 'example-shop.com'. Strip protocol and path if given a full URL.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavioral traits: results are point-in-time and should not be cached, the tool never throws and degrades gracefully by returning null signals, and risk outputs are advisory rather than guarantees. This adds substantial behavioral context that annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although lengthy, the description is well-structured with clear sections (Args, Returns, Recommendation values, Examples, Error Handling) and every section serves a distinct purpose. Core guidance is front-loaded, and the length is justified by the tool's behavioral complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description compensates fully by explaining the return structure, each recommendation value, and the suggested agent behavior for each outcome. It also covers error handling and usage boundaries, making the tool callable correctly without additional external knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single parameter with a clear description, including the example and the instruction to strip protocol/path. The description's Arg section essentially repeats this information without adding significant new meaning, so the schema carries the burden and the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Checks whether') and a specific resource ('a merchant storefront'), with a concrete decision context ('BEFORE an agent commits payment'). It also clarifies what the tool does not do ('does NOT guarantee a storefront is safe'), leaving no ambiguity about its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'Use when' and 'Don't use when' guidance, including concrete scenarios like submitting payment to a newly found storefront, comparing candidates, and avoiding routine repeat purchases. It also maps return values to specific agent behaviors, so an agent knows exactly when to proceed, pause, or block.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.2.0
    • First observedverify_storefront

TDQS

A4.6/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap. The tool's purpose is singular and clearly defined, so agents cannot misselect between alternatives.

Naming Consistency5/5

The single tool name 'verify_storefront' follows the verb_noun pattern consistently. With one tool, there are no naming inconsistencies or mixed conventions to evaluate.

Tool Count3/5

The server has only one tool, which feels thin for a domain that could reasonably include additional operations like reporting a scam or checking verification history. However, the narrow purpose of storefront verification is adequately covered by this single comprehensive tool, making it borderline appropriate.

Completeness5/5

For the stated purpose of pre-purchase storefront verification, the tool covers all necessary signals (domain registration, SSL, HTTPS, scam list) and returns actionable recommendations. There are no obvious gaps or dead ends for the defined use case.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that verifies storefront merchants before AI agents make payments, checking if the merchant is a real legal entity bound to the domain, and returning a PROCEED, ABORT, or REVIEW decision to prevent payment to clones or fraudulent stores.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides trust infrastructure for AI agents by enabling reputation lookup, website trust scanning, and identity verification via MCP tools.
    1
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to scan payment endpoints for safety, returning a letter grade (A–F) and verdict before authorizing payments.
    2
    21 npm
    MIT