# io.github.mlawsonking/payment-guard-mcp (npm · payment-guard-mcp)

Pre-send risk check for AI agents that move money — screen an address or payment URL before sending.

- Trust score: 66/100 (medium)
- Change this week: +20
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `payment-guard-mcp`: 66/100 (this document), [markdown](https://verifymcp.io/servers/mlawsonking-payment-guard-mcp/payment-guard-mcp.md), [page](https://verifymcp.io/servers/mlawsonking-payment-guard-mcp/payment-guard-mcp)

## Channel facts

- Registry: `npm`
- Package: `payment-guard-mcp`
- Version: `1.2.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 2 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 61/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1142 tokens (~228/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add mlawsonking-payment-guard-mcp -- npx -y payment-guard-mcp
```

### Codex

```bash
codex mcp add mlawsonking-payment-guard-mcp -- npx -y payment-guard-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mlawsonking-payment-guard-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "payment-guard-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mlawsonking-payment-guard-mcp --command npx --arg -y --arg payment-guard-mcp
```

### Hermes

```yaml
mcp_servers:
  mlawsonking-payment-guard-mcp:
    command: "npx"
    args: ["-y", "payment-guard-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "mlawsonking-payment-guard-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "payment-guard-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 66, −2)

No change was recorded against any check on this day. Supply Chain Security went from 97 to 87. Other categories moved too: Stability & Change Management rose 3.

### 2026-08-02 (score 68, +63)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] Licence: MIT

### 2026-08-01 (score 5, −13)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-31 (score 18, −38)

- [security regression] Malware scan: pass → unverified
- [security regression] Install scripts: pass → unverified
- [security regression] Provenance: fail → unverified
- [functional regression] Maintenance: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] License: pass → unverified
- [functional] First check of Schema quality: unverified
- [functional] Licence: MIT
- [functional] Package version: 1.0.1 → 1.1.0
- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 56, +10)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-07-27 (score 46)

First indexed and scored.

## MCP tools (5)

### `screen_address` (~239 tokens)

The pre-send check for an agent about to send funds to a crypto address. Takes an EVM address or an ENS name and returns safe, caution or block from three inputs: the OFAC EVM sanctions lists, the ethereum-lists and ScamSniffer scam blocklists, and an on-chain read (brand-new and unused address, which is the shape of a scam drop address, or a contract). Sanctions coverage is EVM-format address lists only, so Bitcoin, Tron, Solana and Monero sanctioned addresses are not checked; it applies to every EVM chain, because OFAC lists addresses by currency rather than by chain. If a list fails to load the verdict is downgraded to caution and a flag names the check that did not run, rather than reporting safe. Read sanctions_coverage in the response. Network: needs OFAC sanctioned-address lists, ethereum-lists + ScamSniffer blocklists, public EVM RPC.

Input parameters:

- `address` (string, required): EVM address (0x + 40 hex) or ENS name (e.g. name.eth).
- `chain` (string): EVM chain (default eth).

### `screen_payment` (~215 tokens)

Check an x402 endpoint or merchant URL before paying it. The structural half is local: punycode host, raw-IP host, credentials in the URL, abuse-prone TLD, known shorteners, excessive subdomains, nonstandard port, and a substring match against 14 brand names flagged when the brand is not the registrable domain, so paypal.com.secure-pay.xyz is caught. There is no edit distance and no homoglyph mapping, so an ASCII typo like paypa1.com is not caught by that rule. Domain age needs RDAP and the destination after redirects needs a fetch; the intermediate hops are not analysed. Offline it still returns the structural verdict and reports those two network checks as skipped. Returns safe, caution or block. Network: needs rdap.org, the URL being screened (redirect follow). The network is only used when the domain age is looked up and redirects are followed. The structural analysis is local and runs offline.

Input parameters:

- `url` (string, required): The x402/payment endpoint or merchant URL.

### `check_sanctioned` (~225 tokens)

Fast OFAC sanctions check for a crypto address or ENS name, with no on-chain lookup and no scam lists. Matches against the union of every EVM-format OFAC SDN list (ETH, ARB, BSC, ETC, USDC, USDT), which applies to all EVM chains because OFAC lists addresses by currency rather than by chain. Only EVM (0x) addresses are covered: the Bitcoin, Tron, Solana, Monero and other non-EVM sanctioned addresses are on the SDN list and are not checked here. sanctioned:false means the address is absent from those EVM lists and nothing more. If the lists cannot be loaded, sanctioned is null and the verdict is "unknown"; if only some of them load, the verdict is "unknown" too, because absence from a partial corpus is not a clear result. Read coverage in the response. Network: needs OFAC sanctioned-address lists, public EVM RPC (only when an ENS name is passed).

Input parameters:

- `address` (string, required): EVM address or ENS name.

### `resolve_name` (~208 tokens)

Resolve an ENS name to an address and screen that address against the OFAC EVM sanctions lists and the scam/abuse blocklists. Resolution is namehash, then the mainnet ENS registry resolver, then a direct addr() call. There is no ENSIP-10/CCIP-Read, so offchain and L2 names (Basenames, .cb.id, gasless subnames) report resolved:false here even though a wallet resolves them. It does NOT detect lookalike or homoglyph names: no confusable check and no ENSIP-15 normalization, so a spoofed name that resolves to a clean address comes back clean. A failed registry call is reported as a failed lookup, never as an unregistered name. Read ens_coverage in the response. Network: needs public EVM RPC (ENS registry), OFAC sanctioned-address lists, ethereum-lists + ScamSniffer blocklists.

Input parameters:

- `name` (string, required): ENS name, e.g. vitalik.eth.

### `screen_token` (~255 tokens)

Check a token contract before an agent buys, swaps or approves it: is it a HONEYPOT (you can buy but not sell), does it have an extreme sell tax, is it on a scam/abuse blocklist. The buy+sell simulation comes from api.honeypot.is, which supports Ethereum and Base only and answers 400 "Invalid chain" for polygon, arbitrum and optimism, so the honeypot and tax fields cannot be populated there. It also has no result for tokens with no liquidity pool, which is exactly the population most likely to be a rug. When no simulation ran the verdict is never safe: it is caution, or block if the blocklist already hit, with a honeypot-check-unavailable flag, and honeypot_checked plus honeypot_coverage say what happened. Returns token name/symbol, buy/sell/transfer taxes where available, and a verdict of safe, caution or block. Network: needs honeypot.is, ethereum-lists + ScamSniffer blocklists, public EVM RPC.

Input parameters:

- `address` (string, required): Token contract address (0x + 40 hex).
- `chain` (string): EVM chain (default eth).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/mlawsonking-payment-guard-mcp/payment-guard-mcp#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 68
- 2026-08-01: 5
- 2026-07-31: 18
- 2026-07-29: 56
- 2026-07-28: 46
- 2026-07-27: 46

## Links

- npm package: https://www.npmjs.com/package/payment-guard-mcp
- Socket report: https://socket.dev/npm/package/payment-guard-mcp
- Repository: https://github.com/mlawsonking/MCP
- Changelog RSS feed: https://verifymcp.io/servers/mlawsonking-payment-guard-mcp/payment-guard-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/mlawsonking-payment-guard-mcp/payment-guard-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/mlawsonking-payment-guard-mcp/payment-guard-mcp
