for developers

Verify software before install or recommend. One MCP connection.

Add Attestd to Claude Code, Cursor, or Windsurf. Before your assistant installs a package or recommends a dependency, it calls Attestd and returns a direct answer: CVE risk, supply chain compromise, and whether the package name itself is a typosquat or AI hallucination. Not a CVSS score to reason about. A risk state to act on.

Free tier available. Solo at $19.99 per month. Sonatype Guide Pro is $1,200/year. Same assistants. Different output.

supply chain check
You: Is litellm 1.82.7 safe to install?

Assistant: Checking Attestd...
  check_package_vulnerability("litellm", "1.82.7")
  → supplyChainCompromised: true

Do not install litellm 1.82.7. Attestd has detected a confirmed supply chain
compromise on this version. No safe version is currently flagged as patched.
Remove it from your dependencies entirely.
name integrity check
You: Install react-codeshift for the migration.

Assistant: Checking Attestd...
  check_package_vulnerability("react-codeshift", "1.0.0")
  → outsideCoverage: true
  → typosquat.detected: true
  → typosquat.kind: "hallucination"
  → typosquat.resembles: "@types/jscodeshift"
  → typosquat.likely_intended: ["@types/jscodeshift", "jscodeshift"]

Do not install react-codeshift. Attestd flags it as an AI-hallucinated package
name. Prefer @types/jscodeshift or jscodeshift instead.
how it works

Ask. Check. Answer. No interpretation layer.

01

Connect MCP

Add Attestd to your IDE config. Hosted server or local npx. Under five minutes.

02

Ask before install or recommend

Your assistant calls check_package_vulnerability at the action boundary: before it installs a package or recommends a dependency.

03

Get a direct answer

risk_state, actively_exploited, supply_chain.compromised, typosquat. No CVSS interpretation step.

You ask about a packagecheck_package_vulnerabilityrisk_state answer
why deterministic output

Cleaner answers from your coding assistant

CVSS-backed tools return advisory data your assistant must weigh and summarize. Attestd returns categorical fields your assistant reads and states directly. Same data call, consistent answer every time.

CVSS advisory
{
  "cvssScore": 7.4,
  "severity": "HIGH",
  "recommendation": "Consider upgrading when convenient..."
}

Requires interpretation before your assistant can answer “is this safe?”

attestdmachine-readable
{
  "risk_state": "critical",
  "actively_exploited": true,
  "patch_available": true,
  "fixed_version": "2.25.5",
  "supply_chain": {
    "compromised": false
  },
  "typosquat": null
}

Branch on risk_state. Supply chain and name integrity in the same call.

This is exactly the kind of compromise an MCP-connected IDE check catches before install. See debug, chalk, and axios, attributed to North Korea's Sapphire Sleet for the live example.

works with your IDE

Attestd for Cursor, Claude Code, and Windsurf

Copy the config block for your client. Paste your API key. Restart. Full setup guides linked on each card.

Attestd for Cursor

Works with Cursor via MCP. Paste config, restart, ask about any dependency.

config path.cursor/mcp.json
.cursor/mcp.json
{
  "mcpServers": {
    "attestd": {
      "url": "https://mcp.attestd.io/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key-here"
      }
    }
  }
}

Attestd for Claude Code

Hosted at mcp.attestd.io. No Node.js install. Claude Code calls the tool in normal flow.

config path~/.claude/mcp.json
~/.claude/mcp.json
{
  "mcpServers": {
    "attestd": {
      "url": "https://mcp.attestd.io/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key-here"
      }
    }
  }
}

Attestd for Windsurf

Global config only. Remote servers use serverUrl instead of url.

config path~/.codeium/windsurf/mcp_config.json
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "attestd": {
      "serverUrl": "https://mcp.attestd.io/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key-here"
      }
    }
  }
}
same API, action boundaries

Before install in the IDE. Before deploy in production.

Every developer who connects Attestd in their IDE uses the same verify-before-act model that production pipelines and autonomous agents use. Before install and before recommend in the editor. Before deploy, expose, execute, and upgrade in automation. No migration, no new contract, no data format change when the workflow loses the human in the loop.

MCP stays at the package boundary in the editor. CI uses a lockfile scan or a CycloneDX JSON document. Same risk_state and supply_chain.compromised fields. MCP does not ingest SBOMs in v1.

POST /v1/sbom
curl -X POST "https://api.attestd.io/v1/sbom" \
  -H "Authorization: Bearer $ATTESTD_KEY" \
  -H "Content-Type: application/vnd.cyclonedx+json" \
  --data @bom.json

Cap 2,000 components. One returned row is one billed call, including outside_coverage. Do not post a container image SBOM unless you intend to bill every apk or deb row. SPDX is out of v1.

Lockfile in GitHub Actions

Scan package-lock.json or requirements.txt with check-action. No BOM file required.

GitHub Action setup →

CycloneDX JSON

If the pipeline already emits CycloneDX 1.3 through 1.6, POST the document to /v1/sbom.

SBOM ingestion docs →
pricing

Flat rate. No credit metering.

Sonatype Guide Pro is $100/month (billed annually) ($1,200/year), credit-metered. Attestd Solo is a flat $19.99 per month for 10,000 calls.

Free
$0forever
1,000 calls / month

Designed for evaluation and proof-of-concept projects.

Get a free key
popular
Solo
$19.99/ month
10,000 calls / month

No credit consumption. No overage billing on Solo.

Get started

Compare Attestd and Sonatype Guide → · Full pricing

Ready to connect your IDE?

Free API key in under a minute. Setup docs walk through each client step by step.