# io.github.attestd-io/attestd-mcp (npm · @attestd/mcp)

CVE and supply chain checks for MCP clients. Covers infrastructure, PyPI, and npm packages.

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

## Components

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

## Channel facts

- Registry: `npm`
- Package: `@attestd/mcp`
- Version: `0.2.1`
- 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 (95 of 99), 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 (95 of 99), 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 26 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 370 tokens (~123/item across 3 items; 3 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **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.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add attestd-io-attestd-mcp -- npx -y @attestd/mcp
```

### Codex

```bash
codex mcp add attestd-io-attestd-mcp -- npx -y @attestd/mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add attestd-io-attestd-mcp --command npx --arg -y --arg @attestd/mcp
```

### Hermes

```yaml
mcp_servers:
  attestd-io-attestd-mcp:
    command: "npx"
    args: ["-y", "@attestd/mcp"]
```

### Other

```json
{
  "mcpServers": {
    "attestd-io-attestd-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@attestd/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-02 (score 66, +30)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT

### 2026-08-01 (score 36, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-07-31 (score 21, −7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 28, +3)

- [security regression] Malware scan: pass → unverified
- [functional regression] Dependency health: partial → unverified
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 25, −21)

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

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

First indexed and scored.

## MCP tools (3)

### `check_package_vulnerability` (~164 tokens)

Check whether a software package or infrastructure product version has known CVE vulnerabilities or a confirmed supply chain compromise. Call this before adding, updating, or recommending any npm, PyPI, or infrastructure dependency, including mid-conversation when a developer asks about installing or upgrading a package. outsideCoverage=true means Attestd has no data for that product; treat as unknown risk, not safe. Covers infrastructure products (nginx, PostgreSQL, Redis, Docker, Kubernetes, etc.) and PyPI/npm packages.

Input parameters:

- `product` (string, required): Package or product slug, e.g. "nginx", "runc", "@bitwarden/cli", "litellm"
- `version` (string, required): Exact version string, e.g. "1.20.0"

Output parameters:

- `activelyExploited` (boolean): True when the version appears in the CISA KEV catalog.
- `authenticationRequired` (boolean): True only when all matching CVEs require authentication.
- `confidence` (number): Synthesis confidence from 0.0 to 1.0.
- `cveIds` (array): CVE IDs contributing to the risk assessment.
- `error` (string): Error message when the tool returns isError.
- `fixedVersion` (string): Earliest clean version to recommend. Omitted or null when unknown.
- `message` (string): Explanation when outsideCoverage is true.
- `outsideCoverage` (boolean): True when Attestd has no CVE data for this product. Unknown risk, not safe.
- `patchAvailable` (boolean): True when a fixed version with no critical/high CVEs is known.
- `remoteExploitable` (boolean): True when any matching CVE is remotely exploitable.
- `riskState` (string): Risk band: "critical", "high", "elevated", "low", "none", or null when outside coverage.
- `supplyChainCompromised` (boolean): True when a malicious PyPI or npm publish was detected.
- `supplyChainDescription` (string): Human-readable supply-chain event description when present.
- `typosquat` (object): Typosquat warning when the package name resembles a known product.

### `list_covered_products` (~75 tokens)

Returns infrastructure product slugs covered by Attestd for CVE checks. PyPI and npm packages also work with check_package_vulnerability even when absent from this list. Call this first if you are unsure whether an infrastructure slug is supported. Uses a static bundled list. No /v1/check API call for this tool.

Output parameters:

- `count` (integer): Number of covered infrastructure products.
- `products` (array): Covered products with slug and display name.

### `check_batch_vulnerabilities` (~131 tokens)

Check up to 100 software packages or infrastructure products in a single request. Each item is billed as one API call. Use this instead of multiple check_package_vulnerability calls when you need to audit a lockfile, manifest, or dependency list. Items outside Attestd coverage return outsideCoverage=true and should be treated as unknown risk, not safe. A 429 is returned before any results are delivered if the batch would exceed your monthly quota; no calls are billed in that case.

Input parameters:

- `items` (array, required): Products to check. Maximum 100 per call. Each item costs one API call.

Output parameters:

- `count` (integer): Number of items returned.
- `results` (array)

## Diagnostics

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

## Score history

- 2026-08-03: 66
- 2026-08-02: 66
- 2026-08-01: 36
- 2026-07-31: 21
- 2026-07-30: 28
- 2026-07-28: 25
- 2026-07-27: 46

## Links

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