# Commit — Supply Chain Risk Scoring (remote · poc-backend.amdal-dev.workers.dev)

Supply chain risk scoring for npm, PyPI, Cargo, and Go. 9 tools. Behavioral signals.

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

## Components

- remote · `poc-backend.amdal-dev.workers.dev`: 60/100 (this document), [markdown](https://verifymcp.io/servers/piiiico-proof-of-commitment/poc-backend.md), [page](https://verifymcp.io/servers/piiiico-proof-of-commitment/poc-backend)
- npm · `proof-of-commitment`: 49/100, [markdown](https://verifymcp.io/servers/piiiico-proof-of-commitment/proof-of-commitment.md), [page](https://verifymcp.io/servers/piiiico-proof-of-commitment/proof-of-commitment)

## Channel facts

- Endpoint: `https://poc-backend.amdal-dev.workers.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.36.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 12 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2464 tokens (~205/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 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 --transport http piiiico-proof-of-commitment https://poc-backend.amdal-dev.workers.dev/mcp
```

### Codex

```toml
[mcp_servers.piiiico-proof-of-commitment]
url = "https://poc-backend.amdal-dev.workers.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "piiiico-proof-of-commitment": {
      "type": "remote",
      "url": "https://poc-backend.amdal-dev.workers.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add piiiico-proof-of-commitment --url https://poc-backend.amdal-dev.workers.dev/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  piiiico-proof-of-commitment:
    url: "https://poc-backend.amdal-dev.workers.dev/mcp"
```

### Other

```json
{
  "mcpServers": {
    "piiiico-proof-of-commitment": {
      "type": "http",
      "url": "https://poc-backend.amdal-dev.workers.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 59, −1)

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

### 2026-07-30 (score 60, 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 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 58, 0)

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

### 2026-07-26 (score 58)

First indexed and scored.

## MCP tools (12)

### `query_commitment` (~77 tokens)

Query verified behavioral commitment data for a domain. Returns aggregated signals: unique verified visitors, repeat visit rate, and average time spent. These prove real human engagement — harder to fake than reviews or content.

Input parameters:

- `domain` (string, required): The domain to query (e.g. 'example.com'). Will be normalized to lowercase without protocol or path.

### `lookup_business` (~93 tokens)

Search for a Norwegian business and get its commitment profile from public data (Brønnøysund Register Centre). Returns real commitment signals: longevity, financial health, employee count, and overall commitment score (0-100). Data source: Norwegian government registers — free, verified, unfakeable.

Input parameters:

- `query` (string, required): Business name to search for (e.g. 'Peppes Pizza', 'Equinor')

### `lookup_business_by_org` (~70 tokens)

Look up a specific Norwegian business by organization number (9 digits) and get its commitment profile. Returns temporal, financial, and operational commitment signals from Brønnøysund Register Centre.

Input parameters:

- `orgNumber` (string, required): Norwegian organization number (9 digits, e.g. '984388659')

### `lookup_github_repo` (~159 tokens)

Get a behavioral commitment profile for any public GitHub repository. Returns real signals that prove genuine investment: how long the project has existed, recent commit frequency, contributor community size, release cadence, and social proof. These are behavioral commitments — harder to fake than README claims or marketing copy.

Useful for: vetting open-source dependencies, evaluating AI tools/frameworks, assessing vendor reliability, due diligence on any GitHub project.

Examples: "vercel/next.js", "facebook/react", "https://github.com/piiiico/proof-of-commitment"

Input parameters:

- `repo` (string, required): GitHub repository in "owner/repo" format or full URL. Examples: "vercel/next.js", "https://github.com/facebook/react"

### `lookup_npm_package` (~250 tokens)

Get a behavioral commitment profile for any npm package. Returns real signals that prove genuine investment: package age, download volume and trend (growing/stable/declining), release consistency, npm publisher count, GitHub contributor count, and linked GitHub activity.

Also returns publisherLifecycle — cross-referencing current maintainers against per-version publish history to flag dormant publishers who still hold npm scope access. The Mastra incident (June 2026) exploited exactly this: a contributor dormant since 2024 with never-revoked scope access.

Why behavioral signals matter: download counts, stars, and READMEs can be gamed. Download *trend* consistency and publisher depth over years are harder to fake. Supply chain attacks often target packages with low publisher depth (few people with npm publish access).

Useful for: vetting dependencies before installation, due diligence on open-source packages, identifying abandonware, checking if a package is actively maintained.

Examples: "langchain", "@anthropic-ai/sdk", "express", "litellm"

Input parameters:

- `package` (string, required): npm package name. Examples: "langchain", "@anthropic-ai/sdk", "express". Scoped packages need the @ prefix.

### `lookup_pypi_package` (~169 tokens)

Get a behavioral commitment profile for any PyPI (Python) package. Returns real signals: package age, download volume and trend, release consistency, publisher/owner count, and linked GitHub activity.

Supply chain attacks target Python packages — LiteLLM (97M downloads/mo) was compromised via stolen PyPI token in March 2026. Behavioral signals reveal what star counts hide.

Useful for: vetting Python dependencies, identifying abandonware, supply chain risk due diligence.
Examples: "langchain", "litellm", "openai", "anthropic", "requests", "fastapi", "pydantic"

Input parameters:

- `package` (string, required): PyPI package name. Examples: "langchain", "openai", "requests", "fastapi". Case-insensitive.

### `lookup_cargo_crate` (~176 tokens)

Get a behavioral commitment profile for any Rust crate on crates.io. Returns real signals: crate age, download volume (estimated weekly from 90-day totals), version count, publish cadence, owner count (users with publish access), team owners, and linked GitHub activity.

Supply chain risks apply to Cargo too — crate owners with publish access are the attack surface. A single owner on a high-download crate is the same risk pattern as npm.

Useful for: vetting Rust dependencies before adding to Cargo.toml, identifying abandonware, supply chain risk assessment.
Examples: "serde", "tokio", "reqwest", "clap", "rand"

Input parameters:

- `crate` (string, required): Crate name on crates.io. Examples: "serde", "tokio", "reqwest", "clap". Case-insensitive.

### `lookup_go_module` (~284 tokens)

Get a behavioral commitment profile for any Go module on proxy.golang.org. Takes a full module path (e.g., "github.com/gin-gonic/gin", "golang.org/x/net", "k8s.io/client-go", "gopkg.in/yaml.v3") and returns real signals: module age, version count, publish cadence, GitHub contributors (the closest equivalent to "publishers" since Go has no centralized publisher concept — git push access is the publish equivalent), GitHub stars, OpenSSF Scorecard score.

The Go ecosystem has no centralized download counter, so this profile is GitHub-primary — the linked source repository's activity, contributor count, and Scorecard carry more weight than for npm/PyPI/Cargo. Stars are used as the popularity proxy.

Useful for: vetting Go dependencies before adding to go.mod, identifying abandonware, supply chain risk assessment.
Examples: "github.com/gin-gonic/gin", "golang.org/x/crypto", "github.com/spf13/cobra", "k8s.io/api"

Input parameters:

- `module` (string, required): Full Go module path. Must include the host. Examples: "github.com/gin-gonic/gin", "golang.org/x/net", "k8s.io/client-go", "gopkg.in/yaml.v3". Case-sensitive (preserves capitalization in path).

### `audit_dependencies` (~382 tokens)

Batch-score multiple npm, PyPI, Cargo, or Go packages for supply chain risk. Takes a list of package names and returns a risk table sorted by commitment score (lowest = highest risk first).

Risk flags:
\- CRITICAL: single publisher + >10M weekly downloads (publish-access concentration risk)
\- HIGH: new package (<1yr) + high downloads (unproven, rapid adoption = supply chain risk)
\- WARN: no release in 12+ months (potential abandonware)
\- WARN: dormant publishers with current scope access — contributors who stopped publishing but retain npm tokens (Mastra-incident vector, June 2026)

Perfect for auditing a full package.json, requirements.txt, Cargo.toml, or go.mod — paste your dependency list and get a prioritized risk report.

For Go: pass full module paths (e.g., "github.com/gin-gonic/gin", "golang.org/x/net") and set ecosystem="golang". The "maintainers" column shows GitHub contributor count since Go has no centralized publisher concept.

Examples: score all deps in a project, compare two similar packages, identify abandonware before it becomes a CVE.

Input parameters:

- `ecosystem` (string): Package ecosystem. "auto" detects by naming convention (Python-style = pypi, otherwise npm). Force "npm", "pypi", "cargo", or "golang" to override. Go modules require full path (host/owner/repo) — us…
- `packages` (array, required): List of package names to score. Up to 20 at once. Examples: ["langchain", "litellm", "openai", "axios"] or ["@anthropic-ai/sdk", "zod", "express"] or ["github.com/gin-gonic/gin", "golang.org/x/net"]…

### `audit_github_repo` (~287 tokens)

Audit the supply chain risk of a GitHub repository's dependencies. Fetches the repo's package.json and/or requirements.txt from GitHub and runs behavioral commitment scoring on every dependency.

This is the fastest way to audit a project — just provide the GitHub URL or owner/repo slug, and get a full risk table in seconds.

Risk flags:
\- CRITICAL: single publisher/maintainer/owner + >10M weekly downloads (publish-access concentration risk)
\- HIGH: sole publisher/maintainer + >1M/wk downloads, OR new package (<1yr) with high adoption
\- WARN: no release in 12+ months (potential abandonware)

Examples:
\- "vercel/next.js" — audit Next.js dependencies
\- "https://github.com/langchain-ai/langchainjs" — audit LangChain JS
\- "facebook/react" — audit React's dependency tree
\- "anthropics/anthropic-sdk-python" — audit Anthropic Python SDK

Use this when someone asks "is my project at risk?" or "audit this repo's dependencies".

Input parameters:

- `repo` (string, required): GitHub repository to audit. Accepts: "owner/repo", "https://github.com/owner/repo", or any GitHub URL. Examples: "vercel/next.js", "https://github.com/langchain-ai/langchainjs"

### `audit_dependency_tree` (~360 tokens)

Map the full dependency tree of an npm package and identify CRITICAL supply chain risks at every level.

Unlike auditing a flat list of packages, this tool traverses the dependency graph — showing not just your direct dependencies but also what your dependencies depend on. Hidden CRITICAL packages (sole publisher + >10M weekly downloads) often lurk 1-2 levels deep.

Risk flags:
\- CRITICAL: single npm publisher + >10M weekly downloads — sole point of failure for a massive attack surface
\- HIGH: sole publisher + >1M/wk, OR new package (<1yr) with high adoption
\- WARN: no release in 12+ months (potential abandonware)

depth=1 (default): root package + all direct dependencies
depth=2: also traverses one more level for any CRITICAL/HIGH direct deps (reveals hidden exposure)

Examples:
\- audit_dependency_tree("express") — see all of Express's deps and their risk scores
\- audit_dependency_tree("langchain", 2) — reveal transitive CRITICAL deps 2 levels deep
\- audit_dependency_tree("@anthropic-ai/sdk") — audit Anthropic SDK full tree

Use this when someone asks:
\- "What am I really depending on?"
\- "Are my dependencies' dependencies safe?"
\- "Show me the full supply chain risk for package X"

Input parameters:

- `depth` (integer): How deep to traverse. 1 = direct deps only (fast). 2 = also traverse deps of CRITICAL/HIGH packages (slower, reveals hidden risk). Default: 1
- `package` (string, required): npm package name to map. Examples: "express", "langchain", "@anthropic-ai/sdk", "zod"

### `get_api_key` (~157 tokens)

Create a free Commit API key instantly — no browser required.

When you've hit the daily free query limit (or just want faster access), call this tool with your email to get an API key returned directly in the chat. The key lifts the rate limit to 200 audits/day and enables package monitoring (weekly alerts when your dependencies get riskier).

After creating the key, configure your MCP client to pass it:
  Authorization: Bearer sk_commit_<your-key>

Example: get_api_key({ email: "dev@company.com" })

One key per email. 3 keys per IP per day (anti-abuse).

Input parameters:

- `email` (string, required): Your email address — used for alert delivery and key recovery. One key per email.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/piiiico-proof-of-commitment/poc-backend#diagnostics

## Score history

- 2026-08-03: 60
- 2026-08-02: 60
- 2026-08-01: 59
- 2026-07-31: 59
- 2026-07-30: 60
- 2026-07-29: 60
- 2026-07-28: 59
- 2026-07-27: 58
- 2026-07-26: 58

## Links

- Remote endpoint: https://poc-backend.amdal-dev.workers.dev/mcp
- Repository: https://github.com/piiiico/proof-of-commitment
- Website: https://getcommit.dev/
- Changelog RSS feed: https://verifymcp.io/servers/piiiico-proof-of-commitment/poc-backend/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/piiiico-proof-of-commitment/poc-backend/changelog.json
- HTML version of this page: https://verifymcp.io/servers/piiiico-proof-of-commitment/poc-backend
