Skip to main content
Glama
badchars

supply-chain-mcp-server

by badchars

The Problem

Supply chain security intelligence is the missing layer in modern software development. Vulnerability databases, package registries, provenance verification, exploit prediction scoring, license compliance, security scorecards, typosquatting detection — the data you need is scattered across dozens of platforms, each with its own API, its own auth, its own rate limits, its own output format. Today you check OSV in one tab, NVD in another, pull up npm advisories, check EPSS scores on FIRST.org, verify Sigstore provenance in yet another tab, look up OpenSSF Scorecard, cross-reference CISA KEV, and then spend an hour manually piecing it all together.

Traditional supply chain security workflow:
  check vulnerabilities            ->  OSV + NVD + GitHub Advisories (3 separate UIs)
  assess exploit likelihood        ->  EPSS scores (separate API)
  check active exploitation        ->  CISA KEV catalog (separate JSON feed)
  verify package provenance        ->  Sigstore/Rekor + npm attestations (multiple CLIs)
  check security practices         ->  OpenSSF Scorecard + Best Practices Badge (2 UIs)
  audit dependencies               ->  deps.dev + Libraries.io (2 more UIs)
  check registry metadata          ->  npm + PyPI + crates.io + Go (4 registries)
  check for typosquatting          ->  manual name comparison (error-prone)
  verify license compliance        ->  ClearlyDefined (another UI)
  check distro packaging           ->  Repology (yet another UI)
  ────────────────────────────────
  Total: 45+ minutes per package audit, most of it switching contexts

supply-chain-mcp-server gives your AI agent 7 composite tools (orchestrating 90 techniques internally) across 21 data sources via the Model Context Protocol. The agent calls a single tool like vuln_scan or package_info, which automatically fans out to the right techniques in parallel, correlates vulnerability data with exploit predictions, verifies provenance, checks security posture, and presents a unified supply chain risk assessment — in a single conversation.

With supply-chain-mcp-server:
  You: "Audit the security posture of the express npm package"

  Agent: -> vuln_scan(mode:"package", ecosystem:"npm", name:"express")
            internally runs: osv_query + ghsa_package + epss_batch + kev_lookup
         -> package_info(ecosystem:"npm", name:"express", version:"4.21.2")
            internally runs: npm_package + npm_downloads + npm_maintainers + npm_scripts + npm_provenance
         -> quality(mode:"scorecard", owner:"expressjs", repo:"express")
            internally runs: scorecard_repo
         -> "express has a strong security posture. 2 known vulns but
            neither actively exploited (not in KEV). High EPSS on one
            CVE warrants patching priority. Provenance verified via
            Sigstore. OpenSSF Scorecard 8.2/10."

Related MCP server: DepScope

How It's Different

Existing tools give you raw data one source at a time. supply-chain-mcp-server gives your AI agent the ability to reason across vulnerability, provenance, and package intelligence simultaneously.


Quick Start

Option 1: npx (no install)

npx supply-chain-mcp-server

7 composite tools (90 techniques) work immediately. No API keys required for most data sources — 18 of 21 sources are fully free.

Option 2: Clone

git clone https://github.com/badchars/supply-chain-mcp-server.git
cd supply-chain-mcp-server
bun install

Environment variables (optional)

export GITHUB_TOKEN=your-token        # GHSA + Scorecard higher rate limits
export LIBRARIES_API_KEY=your-key     # Required for Libraries.io tools
export NVD_API_KEY=your-key           # 50 req/30s vs 5 req/30s without key

All API keys are optional. Without them, you still get 6 of 7 composite tools fully operational — only Libraries.io (within dep_tree) requires an API key.

Connect to your AI agent

# With npx
claude mcp add supply-chain-mcp-server -- npx supply-chain-mcp-server

# With local clone
claude mcp add supply-chain-mcp-server -- bun run /path/to/supply-chain-mcp-server/src/index.ts

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "supply-chain": {
      "command": "npx",
      "args": ["-y", "supply-chain-mcp-server"],
      "env": {
        "GITHUB_TOKEN": "optional",
        "LIBRARIES_API_KEY": "optional",
        "NVD_API_KEY": "optional"
      }
    }
  }
}

Same JSON config format. Point the command to npx supply-chain-mcp-server or your local installation path.

Start querying

You: "Check if express@4.17.1 has any known vulnerabilities and verify its provenance"

That's it. The agent handles vulnerability lookups, EPSS scoring, KEV checks, provenance verification, and more automatically.


What The AI Can Do

Full Package Audit

You: "Do a complete security audit of the lodash npm package"

Agent: -> vuln_scan {mode: "package", ecosystem: "npm", name: "lodash"}
          ↳ osv_query + ghsa_package + epss_batch + kev_lookup (parallel)
       -> package_info {ecosystem: "npm", name: "lodash", version: "4.17.21"}
          ↳ npm_package + npm_downloads + npm_maintainers + npm_scripts + npm_provenance + npm_attestations + npm_audit_bulk (parallel)
       -> quality {mode: "scorecard", owner: "lodash", repo: "lodash"}
          ↳ scorecard_repo
       -> license {mode: "lookup", type: "npm", name: "lodash", version: "4.17.21"}
          ↳ license_lookup
       -> "lodash@4.17.21 security audit:
          Vulnerabilities: 3 historical (all fixed in 4.17.21),
          including prototype pollution CVE-2020-8203.
          Provenance: No Sigstore attestation (published pre-provenance era).
          OpenSSF Scorecard: 6.1/10 — no branch protection, no fuzzing.
          Dependencies: Zero runtime deps (self-contained).
          License: MIT (ClearlyDefined confirmed).
          Lifecycle scripts: None — clean.
          Recommendation: Safe to use at latest version. Consider
          migrating to lodash-es for tree-shaking."

Vulnerability Triage

You: "Triage CVE-2024-3094 — how urgent is this?"

Agent: -> vuln_scan {mode: "cve", cve_id: "CVE-2024-3094"}
          ↳ nvd_cve + osv_id + ghsa_id + epss_score + kev_lookup (parallel)
       -> "CVE-2024-3094 (xz-utils backdoor):
          CVSS: 10.0 Critical — backdoor in xz-utils 5.6.0/5.6.1
          EPSS: 0.95 (99th percentile) — extremely likely to be exploited
          CISA KEV: YES — actively exploited, deadline March 2024
          Affects: xz-utils/liblzma on Linux (sshd via systemd)
          This is CRITICAL. Immediate action required:
          1. Downgrade xz-utils to 5.4.x or remove 5.6.0/5.6.1
          2. Check all systems for affected versions
          3. This was a sophisticated supply chain attack via
             a compromised maintainer."

Dependency Risk Assessment

You: "Assess the supply chain risk of adding fastapi to our Python project"

Agent: -> package_info {ecosystem: "pypi", name: "fastapi"}
          ↳ pypi_package + pypi_releases + pypi_maintainers (parallel)
       -> vuln_scan {mode: "package", ecosystem: "PyPI", name: "fastapi"}
          ↳ osv_query + ghsa_package + epss + kev (parallel)
       -> dep_tree {mode: "dependencies", ecosystem: "pypi", name: "fastapi", version: "0.115.0"}
          ↳ deps_dependencies + deps_requirements + libraries_deps (parallel)
       -> quality {mode: "full", owner: "tiangolo", repo: "fastapi", repo_url: "https://github.com/tiangolo/fastapi"}
          ↳ scorecard_repo + badge_by_repo (parallel)
       -> security_check {mode: "typosquat", name: "fastapi", ecosystem: "pypi"}
          ↳ typosquat_check
       -> "fastapi supply chain risk assessment:
          Vulnerabilities: 1 low-severity (fixed in latest).
          Dependencies: 5 direct (starlette, pydantic, etc.), 23 transitive.
          OpenSSF Scorecard: 7.4/10 — good CI/CD, signed releases.
          Maintainer: single primary maintainer (tiangolo).
          Typosquatting: 'fast-api' and 'fastapi2' exist — verify
          you're installing the correct package.
          Risk: LOW. Well-maintained, active community, good security
          practices. Single-maintainer risk is mitigated by strong
          automation and community oversight."

Typosquatting Detection

You: "I'm about to install 'reqeusts' from PyPI — is this safe?"

Agent: -> security_check {mode: "typosquat", name: "reqeusts", ecosystem: "pypi"}
          ↳ typosquat_check
       -> security_check {mode: "compare_names", name_a: "reqeusts", name_b: "requests"}
          ↳ typosquat_compare
       -> "WARNING: 'reqeusts' is a likely typosquat of 'requests'.
          Edit distance: 2 (transposed 'ue' -> 'eu')
          Similarity: 87.5%
          The legitimate package is 'requests' (800M+ monthly downloads).
          'reqeusts' has very low downloads and was likely published
          to exploit typos. DO NOT install this package.
          Correct command: pip install requests"

Composite Tools (7 tools, 90 techniques)

The AI agent sees only 7 composite tools (~1K tokens), each orchestrating multiple techniques in parallel internally.

Composite Tool

Techniques

Modes

Description

vuln_scan

24

package cve batch recent go_module

Vulnerability intelligence across OSV, GHSA, NVD, EPSS, CISA KEV, Go Vuln DB

package_info

33

by ecosystem

Package metadata — auto-dispatches to npm (10), PyPI (4), crates.io (4), Go (3), RubyGems (4), NuGet (4), Packagist (4)

dep_tree

14

dependencies dependents project similar search full

Dependency graph intelligence via deps.dev + Libraries.io

security_check

7

typosquat compare_names provenance verify_hash search_log

Supply chain threat detection: typosquatting, provenance, Sigstore

quality

8

scorecard badge distro compare full

Project quality: OpenSSF Scorecard, Best Practices Badge, Repology

license

3

lookup batch search

License compliance analysis via ClearlyDefined

meta

1

—

List all data sources with configuration status


Individual Techniques (90)

Run npx supply-chain-mcp-server --list-all to see the full list.

Tool

Description

osv_query

Query OSV database for known vulnerabilities affecting a specific package and optional version

osv_query_commit

Query OSV database for vulnerabilities associated with a specific git commit hash

osv_query_purl

Query OSV database using a Package URL (purl) for known vulnerabilities

osv_batch

Batch query OSV database for vulnerabilities across multiple packages at once

osv_id

Fetch full vulnerability details from OSV by ID (OSV, CVE, GHSA, RUSTSEC, PYSEC, etc.)

Tool

Description

ghsa_id

Fetch a GitHub Security Advisory by its GHSA or CVE identifier

ghsa_search

Search GitHub Security Advisories by keyword, ecosystem, and severity

ghsa_package

List GitHub Security Advisories affecting a specific package in a given ecosystem

ghsa_recent

List the most recently updated GitHub Security Advisories

Tool

Description

nvd_cve

Fetch full CVE details from NVD (NIST National Vulnerability Database) by CVE ID

nvd_search

Search NVD for CVEs by keyword and optional CVSS v3 severity

nvd_recent

Fetch recently published CVEs from NVD within a given number of days

Tool

Description

epss_score

Get EPSS exploit probability and percentile for a single CVE ID

epss_batch

Batch EPSS scores for multiple CVEs (up to 100) in a single request

epss_top

Get the highest EPSS-scoring CVEs (most likely to be exploited)

epss_above_threshold

Find CVEs with EPSS score above a given threshold

Tool

Description

kev_lookup

Check if a CVE is in the CISA Known Exploited Vulnerabilities (KEV) catalog

kev_search

Search KEV entries by keyword (matched against vendor, product, name, description)

kev_recent

Get recently added KEV entries within the last N days

kev_stats

Get KEV catalog statistics: total count, top vendors, entries per year, and ransomware usage breakdown

Tool

Description

npm_package

Fetch npm package metadata including description, latest version, maintainers, license, repository, homepage, and publish timeline

npm_version

Fetch metadata for a specific npm package version including dependencies, dist info (tarball, shasum, integrity), scripts, and deprecation status

npm_downloads

Fetch npm download counts for a package over a given period (last-day, last-week, last-month)

npm_search

Search the npm registry for packages matching a query string

npm_maintainers

Extract maintainers and publish timeline from an npm package — critical for detecting maintainer takeover attacks

npm_scripts

Extract and analyze lifecycle scripts from a specific npm package version — flags suspicious commands (curl, wget, eval, exec, etc.) commonly used in supply-chain attacks

npm_provenance

Check whether an npm package version has Sigstore provenance attestations and signatures

npm_audit_bulk

Bulk query npm security advisories for a set of packages and versions

npm_attestations

Fetch full Sigstore attestation bundles for an npm package version — returns SLSA provenance and publish attestations

npm_download_range

Get day-by-day npm download counts for a date range — useful for detecting download anomalies or dependency confusion attacks

Tool

Description

pypi_package

Fetch PyPI package metadata including author, license, summary, project URLs, classifiers, and Python version requirements

pypi_version

Fetch metadata for a specific PyPI package version including release URLs with upload times, file sizes, digests, and yanked status

pypi_releases

List all releases of a PyPI package with upload dates, sizes, and yanked status — useful for detecting suspicious rapid version bumps

pypi_maintainers

Extract author and maintainer information from a PyPI package — useful for detecting ownership changes

Tool

Description

crate_info

Fetch crates.io crate metadata including description, download counts, max version, repository, homepage, categories, and keywords

crate_versions

List all versions of a crate with version number, yanked status, license, crate size, creation date, and download count

crate_deps

Fetch dependencies for a specific crate version including dependency kind (normal/dev/build), version requirement, and optional flag

crate_owners

List owners of a crate on crates.io — useful for detecting ownership changes

Tool

Description

gem_info

Fetch RubyGems gem metadata including name, version, authors, description, download counts, project URI, and source code URI

gem_versions

List all versions of a RubyGems gem with release dates, platform info, and version numbers

gem_search

Search the RubyGems registry for gems matching a query string

gem_reverse_deps

Get reverse dependencies of a RubyGems gem — useful for assessing blast radius of a compromised package

Tool

Description

nuget_package

Fetch NuGet package registration metadata including all versions, dependency groups, descriptions, and catalog entries

nuget_search

Search the NuGet registry for packages matching a query string

nuget_versions

List all published versions of a NuGet package from the flat container index

nuget_catalog_entry

Get specific version details from NuGet including dependency groups, description, license, and catalog metadata

Tool

Description

composer_package

Get PHP/Composer package metadata from Packagist including versions, description, maintainers, and repository information

composer_search

Search Packagist for PHP packages matching a query string

composer_stats

Get Packagist package download statistics including total, monthly, and daily download counts

composer_advisories

Get security advisories for PHP packages from Packagist — returns known vulnerabilities and CVEs

Tool

Description

go_module

Fetch Go module info from the module proxy: latest version and all available versions

go_version

Fetch info and go.mod contents for a specific Go module version — returns parsed dependency list

go_sum

Look up a Go module version in the checksum database (sum.golang.org) for hash verification

Tool

Description

go_vuln_id

Fetch a Go vulnerability by its ID from the Go Vulnerability Database

go_vuln_list

List all Go vulnerability IDs from the database index

go_vuln_db_info

Get Go Vulnerability Database metadata including last modified time

go_vuln_by_module

Find Go vulnerabilities affecting a specific module

Tool

Description

deps_package

Look up a package on deps.dev to get metadata, versions, and security information

deps_version

Get detailed info about a specific package version from deps.dev including links, licenses, and advisories

deps_dependencies

Get the dependency tree for a specific package version from deps.dev

deps_dependents

Get packages that depend on a specific package version from deps.dev

deps_advisory

Fetch a security advisory by key (e.g. GHSA-xxxx-xxxx-xxxx) from deps.dev

deps_project

Get project information from deps.dev by repository URL

deps_query

Look up a package by its SHA256 artifact hash on deps.dev

deps_requirements

Get the requirements (version constraints) for a specific package version from deps.dev

deps_similar_packages

Find similarly named packages on deps.dev for typosquatting detection

deps_purl_lookup

Look up a package by Package URL (purl) on deps.dev

Tool

Description

scorecard_repo

Get the OpenSSF Scorecard security score for a GitHub repository, including individual check results

scorecard_compare

Compare OpenSSF Scorecard security scores across 2-5 GitHub repositories side by side

Tool

Description

badge_project

Get OpenSSF Best Practices badge status and criteria for a project by ID

badge_search

Search OpenSSF Best Practices badge projects

badge_by_repo

Find OpenSSF Best Practices badge by GitHub repository URL

Tool

Description

libraries_package

Get package metadata from Libraries.io including repository info, versions, and popularity metrics

libraries_deps

Get dependencies for a specific package version from Libraries.io

libraries_dependents

Get packages that depend on a specific package from Libraries.io

libraries_sourcerank

Get the SourceRank quality score breakdown for a package from Libraries.io

Tool

Description

license_lookup

Get curated license data for a software component from ClearlyDefined

license_batch

Batch license lookup for multiple components via ClearlyDefined

license_search

Search ClearlyDefined for components by pattern

Tool

Description

rekor_search

Search the Rekor transparency log by email, SHA256 hash, or public key fingerprint

rekor_entry

Retrieve a specific Rekor transparency log entry by UUID, including body, attestation, and inclusion proof

rekor_log_info

Get the current Rekor transparency log status including rootHash, treeSize, and signedTreeHead

rekor_entries_search

Retrieve multiple Rekor log entries by their UUIDs or log indexes in a single request

rekor_verify

Verify whether a SHA256 artifact hash has been recorded in the Rekor transparency log

Tool

Description

repology_project

Get package versions across all Linux distributions from Repology

repology_problems

Find packaging problems/issues for a repository on Repology

repology_search

Search Repology projects by name

Tool

Description

typosquat_check

Check if a package name is suspiciously similar to popular packages (potential typosquatting) &mdash; returns matches with edit distance <= 2

typosquat_compare

Compare two package names directly to assess typosquatting risk, showing edit distance, similarity percentage, character-level diff, and confusable character warnings

Tool

Description

supplychain_list_sources

List all 21 supply chain security data sources with configuration status, API key status, and tool counts


CLI Usage

# List 7 composite tools
npx supply-chain-mcp-server --list

# List all 90 individual techniques
npx supply-chain-mcp-server --list-all

# Run composite tools
npx supply-chain-mcp-server --tool vuln_scan '{"mode":"cve","cve_id":"CVE-2024-3094"}'
npx supply-chain-mcp-server --tool vuln_scan '{"mode":"package","ecosystem":"npm","name":"express"}'
npx supply-chain-mcp-server --tool package_info '{"ecosystem":"npm","name":"express","version":"4.21.2"}'
npx supply-chain-mcp-server --tool security_check '{"mode":"typosquat","name":"reqeusts","ecosystem":"pypi"}'
npx supply-chain-mcp-server --tool quality '{"mode":"scorecard","owner":"expressjs","repo":"express"}'
npx supply-chain-mcp-server --tool dep_tree '{"mode":"dependencies","ecosystem":"npm","name":"express","version":"4.21.2"}'

# Individual techniques also work (backward compatible)
npx supply-chain-mcp-server --tool osv_query '{"ecosystem":"npm","name":"express"}'
npx supply-chain-mcp-server --tool epss_score '{"cve_id":"CVE-2024-3094"}'

Data Sources (21)

Source

Auth

Rate Limit

What it provides

OSV.dev

None

1 req/s

Cross-ecosystem vulnerability database (npm, PyPI, Go, Rust, etc.)

GitHub Advisory Database

Optional

1 req/s

Security advisories for GitHub-tracked packages

NIST NVD

Optional

5 req/30s (50 with key)

CVE details, CVSS scores, CPE matching, keyword search

FIRST EPSS

None

2 req/s

Exploit Prediction Scoring System &mdash; probability of CVE exploitation

CISA KEV

None

0.5 req/s

Known Exploited Vulnerabilities catalog with remediation deadlines

npm Registry

None

2 req/s

Package metadata, versions, scripts, provenance, attestations, advisories

PyPI

None

2 req/s

Python package metadata, versions, releases, maintainer info

crates.io

None

1 req/s

Rust crate metadata, versions, dependencies, owners

RubyGems

None

1 req/s

Ruby gem metadata, versions, reverse dependencies

NuGet

None

2 req/s

.NET package metadata, versions, dependency groups

Packagist

None

1 req/s

PHP/Composer packages, download stats, security advisories

Go Module Proxy

None

2 req/s

Go module versions, go.mod contents, checksum verification

Go Vulnerability Database

None

2 req/s

Go-specific vulnerability advisories by module

Google deps.dev

None

5 req/s

Cross-ecosystem dependency graphs, advisories, project info, purl lookup

OpenSSF Scorecard

Optional

1 req/s

Repository security scoring across 18 checks

OpenSSF Best Practices

None

1 req/s

Best Practices badge status and criteria

Libraries.io

LIBRARIES_API_KEY

1 req/s

Package popularity, SourceRank, cross-platform dependency data

ClearlyDefined

None

2 req/s

Curated license data across ecosystems

Sigstore Rekor

None

2 req/s

Transparency log for software signing &mdash; provenance verification

Repology

None

1 req/s

Package versions across Linux distributions

Typosquatting Detection

None

N/A

Built-in Levenshtein distance + confusable character analysis


Architecture

src/
  index.ts                # CLI entrypoint (--help, --list, --list-all, --tool, stdio server)
  composite/              # 7 composite tools (MCP-registered)
    helpers.ts            # callTool(), callToolsParallel(), buildCompositeResponse(), TOOL_REGISTRY
    vuln-scan.ts          # vuln_scan — 24 techniques (5 modes)
    package-info.ts       # package_info — 33 techniques (7 ecosystems)
    dep-tree.ts           # dep_tree — 14 techniques (6 modes)
    security-check.ts     # security_check — 7 techniques (5 modes)
    quality.ts            # quality — 8 techniques (5 modes)
    license.ts            # license — 3 techniques (3 modes)
    meta.ts               # meta — 1 technique
    index.ts              # compositeTools barrel export
  protocol/
    mcp-server.ts         # MCP server setup (stdio transport)
    tools.ts              # Tool registry — imports compositeTools
  types/
    index.ts              # Shared types (ToolDef, ToolContext, ToolResult)
  utils/
    rate-limiter.ts       # Per-provider rate limiter
    cache.ts              # TTL cache for API responses
    http.ts               # Native fetch() wrapper with error handling
    require-key.ts        # API key validation helper
  osv/                    # 5 techniques    govuln/        # 4 techniques
  ghsa/                   # 4 techniques    depsdev/       # 10 techniques
  nvd/                    # 3 techniques    scorecard/     # 2 techniques
  epss/                   # 4 techniques    badge/         # 3 techniques
  kev/                    # 4 techniques    libraries/     # 4 techniques
  npm/                    # 10 techniques   clearlydefined/# 3 techniques
  pypi/                   # 4 techniques    rekor/         # 5 techniques
  crates/                 # 4 techniques    repology/      # 3 techniques
  rubygems/               # 4 techniques    typosquat/     # 2 techniques
  nuget/                  # 4 techniques    meta/          # 1 technique
  packagist/              # 4 techniques
  go/                     # 3 techniques

Design decisions:

  • Composite architecture &mdash; 7 composite tools registered with MCP, each orchestrating multiple individual techniques. LLM context reduced from ~12K tokens (90 tool definitions) to ~1K tokens (7 composites).

  • 22 providers, 1 server &mdash; Every data source is an independent module. Composite tools dispatch to the right provider techniques based on mode/ecosystem.

  • Per-provider rate limiters &mdash; Each data source has its own RateLimiter instance calibrated to that API's limits. No shared bottleneck.

  • TTL caching &mdash; Vulnerability data (5-30min), package metadata (5-15min), KEV catalog (60min), scorecard data (30min) are cached to avoid redundant API calls during multi-tool workflows.

  • Graceful degradation &mdash; Missing API keys don't crash the server. Tools return descriptive error messages: "Set LIBRARIES_API_KEY to enable Libraries.io tools."

  • 2 dependencies &mdash; @modelcontextprotocol/sdk and zod. All HTTP via native fetch(). No external HTTP libraries needed.

  • Backward compatible &mdash; --tool CLI accepts both composite and individual technique names. --list-all shows all 90 techniques.


Limitations

  • Libraries.io tools require a (free) API key from libraries.io

  • NVD free tier is limited to 5 requests per 30 seconds (50 with API key)

  • GHSA and Scorecard benefit from GITHUB_TOKEN for higher rate limits

  • CISA KEV is fetched as a single JSON file (~2MB) and cached for 60 minutes

  • Typosquatting detection compares against a curated list of top npm/PyPI packages (not exhaustive)

  • Go checksum database (sum.golang.org) may return 404 for very old or vendored-only modules

  • Repology API has strict rate limits and may throttle aggressive querying

  • ClearlyDefined coverage varies by ecosystem &mdash; npm and Maven have best coverage

  • macOS / Linux tested (Windows not tested)


Part of the MCP Security Suite

Project

Domain

Tools

hackbrowser-mcp

Browser-based security testing

39 tools, Firefox, injection testing

cloud-audit-mcp

Cloud security (AWS/Azure/GCP)

38 tools, 60+ checks

github-security-mcp

GitHub security posture

39 tools, 45 checks

cve-mcp

Vulnerability intelligence

23 tools, 5 sources

osint-mcp-server

OSINT & reconnaissance

37 tools, 12 sources

darknet-mcp-server

Dark web & threat intelligence

66 tools, 16 sources

fingerprint-mcp

Digital fingerprinting

13 tools, 103 techniques

supply-chain-mcp-server

Software supply chain security

7 tools, 90 techniques, 21 sources


Available Tools

90 tools
badge_by_repoA

Find OpenSSF Best Practices badge by GitHub repository URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_urlYesGitHub repository URL, e.g. 'https://github.com/kubernetes/kubernetes'

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description must carry full burden. Only states it finds a badge; no details on read-only nature, rate limits, or authentication requirements.

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?

One sentence, no fluff – conveys the essential action and input concisely.

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

Completeness3/5

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

Adequate for a simple tool with one parameter, but lacks usage context and sibling differentiation beyond what's obvious.

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?

Single parameter repo_url has good schema description and example. Schema coverage is 100%, so baseline 3 applies; description adds little extra semantic value.

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?

Clearly states it finds an OpenSSF Best Practices badge given a GitHub repo URL. Distinguishes from sibling tools like badge_project and badge_search.

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

Usage Guidelines3/5

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

Implicitly suggests use when you have a repo URL, but no explicit guidance on when not to use or alternatives like badge_project.

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

badge_projectB

Get OpenSSF Best Practices badge status and criteria for a project by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBest Practices project ID number

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description bears full burden. It only states the action (get badge) without disclosing behavioral traits like being read-only, error handling, or rate limits. The description is minimal and lacks transparency into side effects or constraints.

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?

Single sentence, clear and front-loaded. Every word is necessary. No redundancy.

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

Completeness3/5

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

For a simple tool (one param, no output schema), the description is adequate but incomplete. It mentions 'badge status and criteria' but does not describe the response format or what the criteria entail. Since there is no output schema, more detail on return values would be beneficial.

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?

Schema coverage is 100% (one parameter 'id' described as 'Best Practices project ID number'). The description adds 'project ID' but does not provide additional meaning beyond the schema. Baseline is 3 because coverage is high, but no extra value is added.

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?

Description clearly states 'Get OpenSSF Best Practices badge status and criteria for a project by ID.' It uses a specific verb ('Get') and resource ('project'), and distinguishes from sibling tools like 'badge_by_repo' and 'badge_search' by specifying 'by ID'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention any prerequisites, limitations, or when not to use it. Sibling tools exist but are not referenced for comparison.

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

composer_advisoriesB

Get security advisories for PHP packages from Packagist. Returns known vulnerabilities and CVEs affecting the specified package.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorYesVendor name, e.g. 'symfony'
nameYesPackage name, e.g. 'http-kernel'

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions returning vulnerabilities and CVEs but fails to disclose any behavioral traits such as required permissions, rate limits, or side effects.

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?

The description is two concise sentences, front-loaded with the core purpose. No unnecessary words or redundancy.

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

Completeness4/5

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

Given the tool's simplicity (2 required params, no output schema), the description provides sufficient context: it identifies the return type (vulnerabilities/CVEs). However, it does not describe the result format or any pagination, but that is acceptable for this straightforward tool.

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?

Schema description coverage is 100%, so the individual parameter descriptions in the schema already document the parameters. The description adds no extra meaning beyond what the schema provides, warranting the baseline score of 3.

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 the verb 'Get', resource 'security advisories', and scope 'for PHP packages from Packagist'. It effectively distinguishes the tool from siblings like composer_package or composer_search, which do not focus on vulnerabilities.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives (e.g., deps_advisory, osv_query). It only implies usage for checking vulnerabilities, but lacks any when-not-to-use or alternative references.

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

composer_packageA

Get PHP/Composer package metadata from Packagist including versions, description, maintainers, and repository information.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorYesVendor/organization name, e.g. 'laravel'
nameYesPackage name, e.g. 'framework'

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden. It correctly identifies this as a read operation fetching metadata from Packagist and lists included fields. However, it does not disclose potential issues like rate limits, authentication requirements, or what happens if the package does not exist.

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?

The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and output. No unnecessary words or repetition.

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

Completeness3/5

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

The tool has no output schema, so the description should explain return values. It lists included data types but lacks detail on structure or format. While adequate for a simple list tool, more context would improve completeness.

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?

Schema coverage is 100% with descriptions for both 'vendor' and 'name'. The description adds no extra parameter details beyond the schema, so it meets the baseline but does not exceed it.

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 the action ('Get'), the resource ('PHP/Composer package metadata from Packagist'), and lists specific data types included (versions, description, maintainers, repository info). This distinguishes it from sibling tools like composer_search (searching) and composer_stats (statistics).

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

Usage Guidelines3/5

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

The description implies usage for fetching metadata of a known Composer package, but does not provide explicit guidance on when to use it versus siblings like composer_advisories or composer_search. No when-not-to-use or alternative suggestions are given.

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

composer_statsA

Get Packagist package download statistics including total, monthly, and daily download counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorYesVendor name
nameYesPackage name

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description must fully inform about behavior. It correctly indicates a read operation and lists the output categories. However, it lacks details on authentication, rate limits, or whether the counts are raw or formatted. For a simple read tool, the baseline is acceptable but not thorough.

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?

The description is a single concise sentence that front-loads the main action and key data points. Every word contributes to the understanding of the tool's purpose, with no unnecessary text.

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

Completeness3/5

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

Given the simplicity of the tool (two required parameters, no output schema), the description covers the core functionality. However, it does not mention the return format (e.g., JSON structure) or any potential limitations, which would help an agent fully understand the output.

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 input schema has 100% description coverage for its two parameters ('vendor' and 'name'). The tool description does not add any additional meaning beyond what the schema already provides, so it meets the baseline expectation.

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 specifies the action ('Get'), the resource ('Packagist package download statistics'), and the specific data points ('total, monthly, and daily download counts'). It effectively distinguishes itself from sibling tools like composer_package (general package info) and composer_advisories (security advisories).

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus its siblings. It does not mention alternatives or state that this tool is only for download statistics, leaving the agent to infer the context from the name alone.

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

crate_depsA

Fetch dependencies for a specific crate version including dependency kind (normal/dev/build), version requirement, and optional flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCrate name
versionYesExact version, e.g. '1.0.193'

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns dependency kind, version requirement, and optional flag, but does not mention read-only nature, error behavior, rate limits, or pagination. Some behavioral context is given but incomplete.

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

Conciseness4/5

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

A single, front-loaded sentence that immediately states the core action. No wasted words. Could be structured with bullet points for clarity but effective as is.

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

Completeness3/5

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

No output schema, so description must compensate. It lists some return fields but does not describe response structure, pagination, or error handling. Adequate for a simple query but incomplete.

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?

Schema coverage is 100% with descriptions for both parameters. The description adds no new meaning beyond the schema (e.g., it does not provide format constraints or additional context). Baseline 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 the verb 'Fetch' and resource 'dependencies for a specific crate version', and lists the included fields: dependency kind, version requirement, optional flag. This distinguishes it well from siblings like crate_info, crate_versions, and other deps tools.

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

Usage Guidelines3/5

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

The description implies usage when you know a crate name and version, but offers no explicit when-to-use, when-not-to-use, or alternatives among the many sibling tools. It does not mention ecosystem (Rust) or differentiate from generic deps_dependencies tool.

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

crate_infoA

Fetch crates.io crate metadata including description, download counts, max version, repository, homepage, categories, and keywords.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCrate name, e.g. 'serde' or 'tokio'

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so description must disclose behavioral traits. It only states what data is fetched, omitting any mention of authentication, rate limits, error conditions, or side effects, even though the operation is simple and read-only.

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?

Single sentence, no filler, efficiently communicates purpose and output contents.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description adequately lists returned information. Lacks mention of error handling or nonexistent crates, but overall sufficient.

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?

Schema coverage is 100% with parameter 'name' well-described in schema. Description adds context about returned fields but does not enhance parameter meaning beyond the schema, receiving baseline score.

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?

Description uses specific verb 'Fetch' and identifies the resource 'crates.io crate metadata', listing concrete fields returned. It differentiates from sibling tools like crate_deps or crate_owners which cover different aspects.

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

Usage Guidelines3/5

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

Description implies use when needing crate metadata, but does not provide explicit guidance on when not to use or suggest alternatives among many sibling tools like crate_deps or crate_versions.

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

crate_ownersA

List owners of a crate on crates.io including login, name, URL, and kind (user/team). Useful for detecting ownership changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCrate name

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It describes what is listed but does not clarify read-only nature, authentication needs, rate limits, or potential errors.

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

Conciseness4/5

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

The description is a single sentence that efficiently conveys the tool's purpose and output fields. It is front-loaded with the core action and resource.

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

Completeness4/5

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

Given the simplicity (1 parameter, no output schema), the description adequately covers the return fields and use case. It does not mention ordering or pagination but is sufficient for a basic list operation.

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?

Schema coverage is 100% with the parameter 'name' described as 'Crate name'. The description adds no further semantic detail beyond the schema, meeting but not exceeding the baseline.

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 the verb 'List' and the resource 'owners of a crate', and enumerates the fields returned (login, name, URL, kind). This distinguishes it from sibling tools like crate_info or crate_versions.

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

Usage Guidelines3/5

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

The description mentions it is 'useful for detecting ownership changes', providing a use case. However, it does not specify when to use this tool over alternatives or when not to use it.

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

crate_versionsB

List all versions of a crate with version number, yanked status, license, crate size, creation date, and download count.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCrate name

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only lists output fields but does not mention if all versions are returned (pagination limits), authentication needs, rate limits, or any ordering/filtering behavior. This leaves significant gaps for an agent.

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?

The description is a single sentence of 19 words, front-loaded with the action and resource, and efficiently lists the fields. No wasted words.

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

Completeness3/5

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

Given no output schema and no annotations, the description provides the output fields but lacks explicit structure (e.g., array vs. object) and any mention of ordering, filtering, or limits. It is functional but not fully complete for an agent.

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?

Schema coverage is 100% (one parameter 'name' with basic description 'Crate name'). The description does not add any additional meaning beyond the schema, such as format, constraints, or examples. Baseline 3 applies.

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 the tool's purpose: 'List all versions of a crate' and enumerates the specific fields returned (version number, yanked status, license, crate size, creation date, download count). This distinguishes it from siblings like crate_info (single crate info) and crate_deps (dependencies).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., crate_info, crate_deps). It does not mention scenarios where this is appropriate or not, nor does it point to sibling tools for different use cases.

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

deps_advisoryB

Fetch a security advisory by key (e.g. GHSA-xxxx-xxxx-xxxx) from deps.dev

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesAdvisory key, e.g. "GHSA-xxxx-xxxx-xxxx" or CVE ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states 'Fetch', which implies a read operation, but does not mention auth requirements, rate limits, or any side effects. Minimal transparency.

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

Conciseness4/5

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

The description is a single, clear sentence that conveys the essential purpose. It is concise and front-loaded, though it lacks any structural elements like bullet points or expanded details.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description provides minimal context. It does not mention return format, error handling, or source reliability, leaving some gaps for an AI agent.

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 describes the single parameter 'key' with an example format. The description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate given 100% schema coverage.

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 the action ('Fetch'), the resource ('security advisory'), and the source ('from deps.dev'), with a specific example of the key format. This distinguishes it from sibling tools that focus on packages, versions, or other data.

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

Usage Guidelines3/5

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

The description implies the tool is used to fetch an advisory by key, but provides no guidance on when to use this over related advisory tools like ghsa_id or osv_id. No when-not-to-use or alternative suggestions are given.

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

deps_dependenciesB

Get the dependency tree for a specific package version from deps.dev

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem (npm, pypi, cargo, go, maven, nuget)
nameYesPackage name
versionYesPackage version

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility for explaining behavior. It only states the function without disclosing rate limits, authentication needs, response structure, or side effects (none expected).

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

Conciseness4/5

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

The description is a single, concise sentence that conveys the core purpose without unnecessary words. It is front-loaded and efficient, though it could be slightly expanded for completeness.

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

Completeness2/5

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

Given no output schema and no annotations, the description lacks details about the dependency tree's structure (e.g., whether it includes transitive dependencies, version constraints). This is insufficient for an agent to fully understand what the tool returns.

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?

Schema coverage is 100%, providing clear parameter descriptions. The tool description does not add additional meaning beyond the schema, so a baseline score 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 it retrieves the dependency tree for a specific package version, specifying the source (deps.dev). This distinguishes it from sibling tools like deps_package (package info) and deps_dependents (reverse dependencies).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as deps_dependents or deps_version. The description does not mention prerequisites, restrictions, or typical use cases.

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

deps_dependentsA

Get packages that depend on a specific package version from deps.dev

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem (npm, pypi, cargo, go, maven, nuget)
nameYesPackage name
versionYesPackage version

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It indicates a read operation ('Get') and states the data source ('from deps.dev'), but does not mention rate limits, authentication requirements, or the nature of the response (e.g., pagination). Behavior is adequately implied for a simple query tool.

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?

The description is a single, efficient sentence of 11 words with no redundancy. It delivers the core purpose without extraneous information.

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

Completeness2/5

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

The tool lacks an output schema, so the description should provide hints about the return format (e.g., list of package names). It does not, leaving agents uncertain about the response structure. Given low complexity and three required parameters, the omission is a notable gap.

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?

All three parameters are fully described in the input schema (100% coverage). The description adds no additional meaning beyond the schema, so the baseline score 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 the action (Get), the resource (packages that depend), and the specific context (on a specific package version from deps.dev). It effectively distinguishes from sibling tools like deps_dependencies which gets dependencies, not dependents.

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

Usage Guidelines3/5

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

The description implies the tool is for finding dependents of a specific package version but does not provide explicit guidance on when to use it versus alternatives like libraries_dependents. No exclusions or prerequisites are mentioned.

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

deps_packageC

Look up a package on deps.dev to get metadata, versions, and security information

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem (npm, pypi, cargo, go, maven, nuget)
nameYesPackage name

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It only says what the tool returns, omitting details about side effects, error handling, rate limits, or required permissions. Important behavioral context is missing.

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

Conciseness4/5

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

The description is a single sentence that is concise and front-loaded. It efficiently conveys the core purpose without unnecessary words, though it could benefit from additional structure.

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

Completeness3/5

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

For a simple lookup tool with two required parameters and no output schema, the description covers basic purpose but lacks details on return format, error conditions, or limitations. It is adequate but not thorough.

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?

Schema coverage is 100% with both parameters described clearly. The description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool looks up a package on deps.dev to get metadata, versions, and security information. It uses a specific verb and resource, but does not differentiate from sibling tools that also deal with deps.dev packages.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like deps_dependencies or deps_advisory. The description only states what it does without context for selection.

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

deps_projectA

Get project information from deps.dev by repository URL (e.g. github.com/expressjs/express)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesRepository URL without https:// prefix, e.g. "github.com/expressjs/express"

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose the nature of the operation (read-only), what information is returned, or any side effects. The agent is left to assume basic GET behavior.

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?

A single, clear sentence with no fluff. The example is front-loaded and the entire description is highly efficient.

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

Completeness4/5

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

For a simple tool with 1 parameter and no output schema, the description is sufficient to use the tool. However, it lacks behavioral details that would be helpful for an agent, such as typical output structure.

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

Parameters4/5

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

Schema coverage is 100% with a description for the 'url' parameter. The description adds value by specifying the format (without https:// prefix) and providing an example, which aids correct invocation beyond the schema alone.

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 specifies the verb 'Get', the resource 'project information from deps.dev', and the input method 'by repository URL'. The example distinguishes it from sibling tools like deps_package (which takes a package name).

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

Usage Guidelines3/5

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

The description implies usage when you have a repository URL, but does not explicitly state when to use this tool versus alternatives (e.g., deps_package). No when-not or exclusion guidance is provided.

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

deps_purl_lookupA

Look up a package by Package URL (purl) on deps.dev. Purl format: pkg:ecosystem/name@version

ParametersJSON Schema
NameRequiredDescriptionDefault
purlYesPackage URL, e.g. 'pkg:npm/express@4.18.2' or 'pkg:pypi/requests@2.31.0'

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided; description states it's a lookup, implying read-only. Lacks details on potential limits, errors, or side effects, but straightforward operation.

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?

Single sentence with format example, highly concise and front-loaded. Every word contributes value.

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

Completeness4/5

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

Given simplicity (1 parameter, no output schema), the description adequately covers purpose and parameter format. No missing context for operation.

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

Parameters4/5

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

Schema has 100% coverage with parameter description and examples, but description adds format guidance and example purls, enhancing understanding beyond schema.

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?

Description clearly states 'Look up a package by Package URL (purl) on deps.dev', with specific verb and resource. Distinguishes from siblings like deps_package by specifying the lookup method.

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

Usage Guidelines4/5

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

Clearly explains the purl format and provides examples, indicating when to use this tool (when you have a purl). Does not explicitly mention alternatives or exclusions, but context is clear.

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

deps_queryA

Look up a package by its SHA256 artifact hash on deps.dev

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesSHA256 hash of the package artifact

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It does not mention any behavioral traits such as whether the operation is read-only, rate limits, error behavior for missing hashes, or permissions needed. The description only states the basic action.

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?

The description is a single sentence with no unnecessary words. It is front-loaded with the action and immediately conveys the tool's purpose.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema), the description is largely complete. It tells the agent what the tool does and what input is required. However, it could mention what is returned (e.g., package details) to further enhance completeness.

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?

Schema coverage is 100%, with the 'hash' parameter already described as 'SHA256 hash of the package artifact'. The tool description does not add any additional meaning or usage details beyond the schema, so the baseline score of 3 applies.

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 the verb 'look up', the resource 'package', and the method 'by its SHA256 artifact hash'. It effectively distinguishes from sibling tools like deps_package (which likely uses package name) by specifying the hash-based lookup.

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

Usage Guidelines3/5

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

The description implies that this tool is for looking up packages by hash, but it does not provide explicit guidance on when to use this tool over alternatives (e.g., deps_purl_lookup). No exclusions or context about when not to use it are mentioned.

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

deps_requirementsB

Get the requirements (version constraints) for a specific package version from deps.dev

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem (npm, pypi, cargo, go, maven, nuget)
nameYesPackage name
versionYesPackage version

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states the tool gets requirements but does not explain authentication needs, rate limits, error behavior (e.g., for non-existent packages), or the structure of the returned data. Essential traits for a retrieval tool are omitted.

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

Conciseness4/5

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

The description is a single, concise sentence with no wasted words. It is front-loaded with the main action. However, its brevity sacrifices necessary context, making it somewhat under-specified. It earns a 4 for efficiency but loses a point for leaving key details to the schema.

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

Completeness2/5

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

Given the lack of annotations and output schema, and the existence of many sibling deps tools, the description is insufficient. It does not clarify what 'requirements' entails, whether it returns a list or object, or how it differs from deps_dependencies. The description leaves significant gaps for effective tool invocation.

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 input schema covers all three parameters (ecosystem, name, version) with descriptions, achieving 100% coverage. The description adds no additional semantic value beyond the schema, as it only mentions using 'version' implicitly. Per guidelines, the baseline is 3 when schema coverage is high, and no extra value is provided.

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 the tool retrieves 'requirements (version constraints)' for a specific package version from deps.dev. The verb 'Get' and resource 'requirements' are specific, and the mention of 'version constraints' distinguishes it from similar sibling tools like deps_dependencies and deps_version.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as deps_dependencies or deps_version. It does not mention any prerequisites, context, or exclusions, leaving the agent to infer usage without explicit direction.

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

deps_similar_packagesA

Find similarly named packages on deps.dev for typosquatting detection. Useful for verifying you're using the legitimate package.

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem (npm, pypi, cargo, go, maven, nuget)
nameYesPackage name to find similar names for

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose behavioral traits such as how similarity is determined, number of results, or whether it makes external API calls. The description is too minimal for full transparency.

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?

The description is extremely concise with two sentences, front-loading the purpose and usage. Every word is necessary; no filler.

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

Completeness3/5

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

Given the tool has two simple parameters and no output schema, the description is adequate but lacks detail on output format or usage nuances. For a security-related tool, more context could be beneficial, but it meets minimum viability.

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?

Schema coverage is 100% with descriptions for both parameters. The description adds no additional meaning beyond the schema; it merely restates the tool's purpose. Baseline 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 the verb 'Find' and the resource 'similarly named packages' with a specific purpose 'for typosquatting detection'. It distinguishes from sibling tools like 'typosquat_check' and 'typosquat_compare', which have different focuses.

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

Usage Guidelines4/5

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

The description says 'Useful for verifying you're using the legitimate package', providing clear context for use. However, it does not explicitly state when not to use it or mention alternatives, though the sibling tool list implies other options.

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

deps_versionB

Get detailed info about a specific package version from deps.dev including links, licenses, and advisories

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem (npm, pypi, cargo, go, maven, nuget)
nameYesPackage name
versionYesPackage version

TDQS

B3.2/5.0
Behavior3/5

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

No annotations provided. The description mentions the type of data returned (links, licenses, advisories), but lacks details on side effects, authentication, rate limits, or response structure. For a read-only query tool, the description adds some transparency beyond the schema.

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

Conciseness4/5

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

Single sentence, concise, and front-loaded with the action ('Get detailed info'). No unnecessary words. Could potentially add more detail without losing conciseness, but current structure is efficient.

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

Completeness3/5

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

No output schema exists, so the description should compensate by detailing the return value. It mentions three categories of data but not structure or fields. Given the complexity of sibling tools, more context would help, but the description is adequate for a simple version lookup.

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?

Schema describes all 3 parameters with full coverage. The description does not add extra meaning beyond the schema, such as allowed ecosystem values or version format conventions. Baseline score of 3 applies.

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

Purpose4/5

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

The description clearly states the verb 'Get detailed info' and the resource 'specific package version from deps.dev', listing included data (links, licenses, advisories). It differentiates from sibling tools like deps_package or deps_advisory by focusing on a single version's details.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like deps_dependencies or deps_advisory. The description does not specify prerequisites, when not to use it, or scenarios where other tools are preferable.

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

epss_above_thresholdA

Find CVEs with EPSS score above a given threshold.

ParametersJSON Schema
NameRequiredDescriptionDefault
thresholdYesEPSS threshold (0-1), e.g. 0.5 for top 50%
limitNoMax results (default 50)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description fails to disclose behavioral traits such as pagination, response format, or rate limits. For a tool with no annotations, the description should provide more context about what happens during execution.

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?

The description is a single, front-loaded sentence with no unnecessary words. It is maximally concise while conveying the core functionality.

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

Completeness3/5

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

The description is adequate for a simple threshold filter but lacks information about the output (e.g., list of CVE IDs or full details). Without an output schema, the description should hint at the return structure for completeness.

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?

Schema coverage is 100% with comprehensive parameter descriptions. The description adds no additional meaning beyond restating the threshold concept, so baseline 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 the action ('Find'), the resource ('CVEs'), and the criteria ('EPSS score above a given threshold'). It effectively distinguishes from sibling tools like epss_score (single lookup) and epss_top (top scores) by focusing on threshold-based filtering.

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

Usage Guidelines3/5

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

The description implies when to use the tool (threshold filtering) but does not explicitly mention alternatives or when not to use it. No guidance on choosing between this and siblings like epss_batch or epss_top.

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

epss_batchA

Batch EPSS scores for multiple CVEs (up to 100) in a single request.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idsYesArray of CVE IDs (max 100)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states it fetches 'EPSS scores' but does not clarify if it is read-only, destructive, or any side effects. While likely a safe read operation, the description lacks explicit behavioral disclosure.

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?

The description is a single sentence with no wasted words. Every phrase contributes essential information about the tool's capability and constraints.

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

Completeness4/5

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

Given low complexity (1 param, no output schema) the description is nearly complete. It mentions the batch nature and limit, but missing details about the response format (e.g., returns a mapping of CVEs to scores) which could be inferred from sibling tools.

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?

Schema description coverage is 100%, so baseline is 3. The description adds 'batch' and 'single request' context but does not add meaning beyond the schema's description of 'Array of CVE IDs (max 100)'.

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 the verb 'Batch EPSS scores' and the resource 'multiple CVEs' with a specific limit of 100. It distinguishes itself from sibling tools like 'epss_score' (single CVE) and 'epss_above_threshold' (querying).

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

Usage Guidelines4/5

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

The description implies usage for batch requests instead of individual ones via 'up to 100' and 'single request', but does not explicitly mention when not to use it or alternatives. However, the sibling context provides implicit guidance.

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

epss_scoreA

Get EPSS exploit probability and percentile for a single CVE ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE ID, e.g. 'CVE-2024-3094'

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Describes core action but does not disclose return format, rate limits, or authentication needs. Adequate for a simple query tool.

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?

Single sentence, no wasted words, front-loaded with purpose.

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

Completeness3/5

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

Minimal description for a simple tool with one param and no output schema. Could specify return structure (probability, percentile) but adequate for domain users.

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?

Only one parameter with schema description covering it fully. Description adds no new meaning beyond the schema. Baseline 3.

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?

Clear verb 'Get' and specific resource 'EPSS exploit probability and percentile for a single CVE ID'. Distinct from siblings epss_batch and epss_top by specifying 'single'.

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

Usage Guidelines4/5

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

Implicitly advises use for a single CVE ID via the word 'single', distinguishing from epss_batch for multiple IDs. No explicit when-not or alternatives.

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

epss_topB

Get the highest EPSS-scoring CVEs (most likely to be exploited).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results (default 25, max 100)

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It states the tool retrieves top EPSS CVEs but does not disclose output format (e.g., fields returned) or if it requires any prerequisites. The limit parameter is partially detailed in the schema.

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?

Single sentence, zero wasted words. Front-loaded with the action and resource. Highly concise.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description is sufficiently informative. It could optionally mention that results include CVE IDs and EPSS scores, but the current brevity is adequate given low complexity.

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?

Schema coverage is 100% with a clear description of the limit parameter (default 25, max 100). The description adds no extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it returns the highest EPSS-scoring CVEs, using a specific verb and resource. It distinguishes from siblings like epss_above_threshold (threshold-based) and epss_score (specific CVEs) through the name and wording, though not explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as epss_above_threshold or epss_score. The description does not mention alternative use cases or exclusions.

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

gem_infoA

Fetch RubyGems gem metadata including name, version, authors, description, download counts, project URI, source code URI, and other package details.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGem name, e.g. 'rails' or 'devise'

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. It describes a read-only operation but doesn't explicitly state safety, permissions, or potential errors. Missing details like pagination or rate limits.

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?

Single sentence, concise and front-loaded with purpose. Every word adds value, no redundancy.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description adequately lists returned metadata. However, could mention request format or any constraints like gem existence.

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?

Schema description coverage is 100% for the single parameter 'name'. The description adds general context about return fields but doesn't provide additional parameter-specific meaning beyond the schema example.

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 it fetches RubyGems gem metadata, listing specific fields. It distinguishes from sibling tools like gem_search, gem_versions, and gem_reverse_deps by focusing on metadata.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. For instance, if only download counts are needed, gem_search might be more appropriate. The description implies usage for metadata but lacks exclusions or comparisons.

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

gem_reverse_depsA

Get reverse dependencies of a RubyGems gem — lists all gems that depend on this gem. Useful for assessing blast radius of a compromised package.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGem name

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states the tool lists all gems that depend on the input gem, but lacks details on pagination, rate limits, or completeness. Behavioral disclosure is minimal.

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?

Two sentences, front-loaded with purpose, no redundant information. Every word earns its place.

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

Completeness3/5

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

For a simple tool, the description covers the basic purpose and a use case. However, without an output schema, it would benefit from briefly explaining the return format. Additionally, no mention of potential limitations.

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?

Schema description coverage is 100% for the single parameter 'name' as 'Gem name'. The tool description does not add meaning beyond this, so 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?

Description explicitly states the tool gets reverse dependencies for a RubyGems gem and lists dependent gems. It clearly distinguishes from sibling tools like gem_info, gem_search by focusing on reverse dependencies.

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

Usage Guidelines3/5

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

Description provides a use case (assessing blast radius) but does not explicitly state when to use versus alternatives or any exclusions. Context is implied rather than directive.

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

gem_versionsA

List all versions of a RubyGems gem with release dates, platform info, and version numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGem name

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must cover behavioral traits. It implies a read-only listing but does not explicitly state side effects, authorization needs, or rate limits. For a simple list tool, the disclosure is adequate but not comprehensive.

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?

The description is a single, front-loaded sentence with zero wasted words. Every element (action, resource, what's included) is present and efficiently communicated.

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?

Given the tool's simplicity (one required parameter, no output schema), the description sufficiently explains what the tool returns and its purpose. No missing information hinders agent understanding.

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 input schema already describes the only parameter ('name' with description 'Gem name') at 100% coverage. The tool description adds no additional meaning or format details beyond what the schema provides, meeting the baseline.

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 the action (List), resource (versions of a RubyGems gem), and included data (release dates, platform info, version numbers). It effectively distinguishes this tool from siblings like gem_info or gem_search by focusing on version listing.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool vs alternatives. It does not mention when-not-to-use or suggest other tools for different needs, leaving the agent without context for tool selection.

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

ghsa_idB

Fetch a GitHub Security Advisory by its GHSA or CVE identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
ghsa_idYesAdvisory identifier (e.g. GHSA-xxxx-xxxx-xxxx or CVE-2023-1234)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as rate limits, authentication needs, or the structure of the returned data. For a read operation without output schema, this is a significant gap.

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?

The description is a single clear sentence that is front-loaded with the action and resource, containing no unnecessary words. It is concise and direct.

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

Completeness2/5

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

With no output schema and no annotations, the description should explain the return value, but it does not. The tool is simple, but completeness is lacking for an agent to understand what information is retrieved.

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?

Schema coverage is 100% as the parameter has a description in the schema. The tool description essentially repeats the schema's parameter description, adding no extra meaning beyond the format examples. Baseline 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 it fetches a GitHub Security Advisory by identifier. The verb 'Fetch' and resource 'GitHub Security Advisory' are specific. It distinguishes from siblings like ghsa_search and ghsa_recent by specifying retrieval by a single identifier.

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

Usage Guidelines3/5

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

The description implies use when you have an advisory identifier but provides no explicit guidance on when to use this tool over alternatives like ghsa_search or ghsa_recent. No when-not-to-use or comparison with siblings.

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

ghsa_packageB

List GitHub Security Advisories affecting a specific package in a given ecosystem.

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem (npm, pip, go, rubygems, nuget, maven, composer, rust, pub, erlang, actions, swift)
nameYesPackage name

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. It only says 'List' but fails to disclose pagination, rate limits, or whether it returns all advisories or only recent ones. For a listing tool, this is insufficient.

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?

Single, well-structured sentence with no wasted words. Purpose is immediately clear.

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

Completeness2/5

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

No output schema and no annotations. The description does not explain what the output contains (e.g., list of GHSA IDs, titles, severity). Without this, the agent cannot fully understand the tool's behavior.

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?

Schema coverage is 100% with both parameters already described. The description adds no extra meaning beyond the schema, so baseline score of 3 applies.

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?

Description clearly states it lists GitHub Security Advisories for a specific package in a given ecosystem. Distinguishes from siblings like ghsa_id (single advisory) and ghsa_search (search).

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

Usage Guidelines3/5

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

Usage is implied (when you have a package name and ecosystem), but no explicit when-not-to-use or alternatives are provided. Could mention that this is for package-specific queries vs. general search.

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

ghsa_recentB

List the most recently updated GitHub Security Advisories.

ParametersJSON Schema
NameRequiredDescriptionDefault
per_pageNoNumber of results to return (default 25)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must fully convey behavioral traits. It does not mention pagination, rate limits, read-only nature, or return format. The description is minimal and lacks transparency about important behaviors beyond the basic function.

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?

The description is a single, clear sentence that conveys the essential purpose without unnecessary words. It is front-loaded and every part is functional.

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

Completeness4/5

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

Given the simplicity of the tool (one optional parameter, no output schema), the description sufficiently explains what it does. It could mention that it returns a list of advisories, but the word 'list' implies that. Overall, it is nearly complete for the tool's complexity.

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 input schema has one parameter (per_page) with 100% description coverage. The tool description adds no additional meaning beyond what the schema already provides. Baseline of 3 is appropriate since schema coverage is high.

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 the verb 'list' and the resource 'GitHub Security Advisories', with the qualifier 'most recently updated' to distinguish from other ghsa tools like ghsa_search or ghsa_id. It is specific and unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus its siblings (e.g., ghsa_search, ghsa_id). There are no explicit when-to-use, when-not-to-use, or alternative recommendations, leaving the agent without usage context.

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

go_moduleA

Fetch Go module info from the module proxy: latest version and all available versions. Module paths are automatically encoded for the proxy.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesGo module path, e.g. 'golang.org/x/net' or 'github.com/gin-gonic/gin'

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses automatic encoding of module paths and that it retrieves both latest and all versions. Lacks mention of read-only nature or error handling, but sufficient for a simple fetch tool.

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?

Two sentences, no fluff, front-loaded with core action. Every word earns its place.

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?

Given low complexity (1 param, no output schema), description covers what the tool does and a key behavioral detail. No obvious gaps for expected use.

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

Parameters4/5

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

Schema coverage is 100% with good description for the module parameter. Description adds value by noting automatic path encoding, which is not in the schema.

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?

Description clearly states the tool fetches Go module info (latest and all versions) from the module proxy. Uses specific verb and resource. Distinguishes from siblings like go_version or go_vuln_by_module which serve different purposes.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. Context is clear (fetch module proxy info), but with many sibling tools, alternative recommendations are missing.

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

go_sumA

Look up a Go module version in the checksum database (sum.golang.org) for hash verification. Returns the checksum database entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesGo module path
versionYesVersion string, e.g. 'v1.20.0'

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It mentions 'returns the checksum database entry' but fails to disclose behavioral traits such as read-only nature, network dependency, or any side effects. Minimal behavioral context is provided.

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?

Two concise sentences that are front-loaded with essential information. No redundant or extraneous text. Every sentence contributes value.

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

Completeness4/5

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

For a simple lookup tool with 2 well-documented parameters, the description provides adequate context. However, the lack of output schema means the return value is only vaguely described ('entry'), which could be more precise.

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?

Schema coverage is 100%, so parameters are already documented in the schema. The description does not add further meaning beyond the schema's descriptions. Baseline of 3 is appropriate as the schema does the heavy lifting.

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 the action ('Look up'), the resource ('Go module version in the checksum database'), and the purpose ('for hash verification'). It distinguishes itself from sibling tools like go_module and go_version by specifying the checksum database context.

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

Usage Guidelines3/5

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

The description implies usage for hash verification but does not explicitly state when to use this tool over alternatives like go_module or go_version. No guidance on prerequisites or exclusions is provided.

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

go_versionA

Fetch info and go.mod contents for a specific Go module version. Returns version metadata and parsed dependency list from go.mod.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesGo module path
versionYesVersion string, e.g. 'v1.20.0'

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It describes a read-only fetch operation but does not explicitly state that it is non-destructive, nor does it mention any side effects, rate limits, or authentication requirements. While the read-only nature is implied, additional behavioral context (e.g., cache behavior, freshness) is absent.

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?

The description is extremely concise: two sentences totaling about 20 words, with no redundant information. It front-loads the core action ('Fetch info and go.mod contents') and then specifies the return values. Every word adds value.

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

Completeness4/5

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

Given the lack of an output schema, the description compensates by stating it returns 'version metadata and parsed dependency list from go.mod,' which provides sufficient high-level context. However, it could detail the structure of the dependency list or mention whether multiple versions are handled. Overall, it is mostly complete for a simple fetch tool.

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 input schema already provides 100% coverage for both parameters (module and version). The description adds no extra meaning beyond the schema, such as format constraints or examples. With high schema coverage, the baseline score 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 the tool fetches info and go.mod contents for a specific Go module version, and explicitly indicates it returns version metadata and a parsed dependency list. This distinguishes it from siblings like go_module (which may fetch module info without version specificity) and go_vuln_by_module (which focuses on vulnerabilities).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like go_module, go_sum, or other version-specific tools. It lacks explicit 'when to use' or 'when not to use' instructions, leaving the agent to infer context from the tool name alone.

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

go_vuln_by_moduleB

Find Go vulnerabilities affecting a specific module. Fetches the modules index and filters for entries matching the given module path.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesGo module path, e.g. 'golang.org/x/net' or 'github.com/gin-gonic/gin'

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It describes a fetch-and-filter operation but omits details like whether it's read-only, rate limits, error handling, or if the module index is cached. The lack of transparency is notable for a query tool.

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?

Two concise sentences with no redundant or extraneous information. The description is front-loaded with the core action and efficiently completes with the method.

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

Completeness2/5

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

With no output schema, the description should explain return format or behavior (e.g., list of vulnerabilities, empty results). It only says 'filters for entries' without specifying what is returned. Missing context on error cases or pagination leaves the agent with incomplete information.

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?

Schema coverage is 100% with a single parameter 'module' already described in the schema as a Go module path with examples. The tool description adds minimal extra meaning beyond confirming it filters by that path. Baseline 3 is appropriate as schema does the heavy lifting.

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 the tool finds Go vulnerabilities for a specific module, with a precise verb ('Find') and resource ('vulnerabilities affecting a specific module'). It distinguishes from siblings like go_vuln_id (by ID) and go_vuln_list (list all) by focusing on module path filtering.

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

Usage Guidelines3/5

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

The description implies usage when you have a module path, but provides no explicit guidance on when not to use it or alternatives. No comparisons with siblings like go_vuln_id or go_vuln_list are given, leaving the agent to infer context.

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

go_vuln_db_infoA

Get Go Vulnerability Database metadata including last modified time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It implies a read-only operation by saying 'Get' and specifies the returned data (last modified time), but does not disclose potential behavior such as caching, rate limits, or required authentication. The description is adequate but lacks depth.

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?

The description is a single sentence that is concise and front-loaded. Every word adds value, with no filler or unnecessary information.

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

Completeness4/5

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

Given the simplicity of the tool (no parameters, no output schema), the description is mostly complete. It states what the tool returns (metadata including last modified time). However, it could hint at related tools or typical usage context, which would make it more complete.

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

Parameters4/5

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

There are no parameters, and the schema coverage is 100% (since no parameters exist). According to the guidelines, a score of 4 is appropriate for a tool with zero parameters, as the description does not need to add parameter meaning.

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 the verb 'Get' and the resource 'Go Vulnerability Database metadata' including a specific data point ('last modified time'). It distinguishes itself from sibling Go vulnerability tools like go_vuln_by_module and go_vuln_id by focusing on database-level metadata.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. For example, it could mention that this tool is useful for checking the freshness of the database before querying specific vulnerabilities.

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

go_vuln_idA

Fetch a Go vulnerability by its ID from the Go Vulnerability Database. Returns advisory details, affected modules, versions, and references.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGo vulnerability ID, e.g. 'GO-2024-2824'

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It states return data but omits behavioral traits such as authentication requirements, rate limits, or error handling (e.g., behavior for invalid IDs). Adequate for a simple fetch operation.

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?

Two concise sentences front-load the action and resource, with no redundant information. Every word adds value.

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

Completeness4/5

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

Given no output schema, the description covers return contents sufficiently. However, it lacks details on error scenarios (e.g., not found or invalid ID) and does not reference any pagination or limits. Still good for a simple lookup.

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?

Schema coverage is 100% and includes an example value ('GO-2024-2824'). The description adds no additional meaning beyond what the schema already provides for the single parameter.

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 the tool fetches a Go vulnerability by its ID from the Go Vulnerability Database and specifies return contents (advisory details, modules, versions, references). It distinguishes from sibling tools like go_vuln_by_module and go_vuln_list through the precise focus on ID lookup.

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

Usage Guidelines3/5

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

The description implies usage when you have a Go vulnerability ID, but does not explicitly mention when not to use it or suggest alternatives like go_vuln_by_module for module-based queries. Only indirect context from sibling names.

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

go_vuln_listB

List all Go vulnerability IDs from the database index. Returns an array of entry objects with id and modified fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states it lists IDs and returns an array, but does not mention any side effects, rate limits, authorization needs, or behavior beyond the basic function.

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?

Two sentences pack all essential information without any fluff. The description is front-loaded and every word adds value.

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

Completeness4/5

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

For a simple zero-parameter list tool, the description is complete: it specifies what is listed and what fields are returned. However, it might benefit from clarifying the scope (e.g., 'all' vs filtered) or mentioning pagination if applicable.

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

Parameters4/5

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

The tool has zero parameters, so the description cannot add meaning beyond the schema. Baseline is 4 for no parameters and 100% schema coverage. The description correctly notes there are no parameters.

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

Purpose4/5

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

The description clearly states the tool lists all Go vulnerability IDs from the database index and returns an array with id and modified fields. The verb 'list' and resource are specific. However, it does not differentiate from similar siblings like go_vuln_by_module or go_vuln_id, which could cause confusion.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or context for choosing this tool over others.

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

kev_lookupC

Check if a CVE is in the CISA Known Exploited Vulnerabilities (KEV) catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE ID to check, e.g. 'CVE-2024-3094'

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description fails to disclose behavioral traits such as read-only nature, authentication requirements, rate limits, or error handling. The tool appears safe (read-only lookup), but this is only implied.

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?

The description is a single, focused sentence with no extraneous words. It efficiently conveys the tool's purpose.

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

Completeness2/5

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

For a simple lookup tool with no output schema, the description lacks information about the return format (e.g., boolean or details) and error handling. This is a notable gap given the minimal complexity.

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?

Schema coverage is 100% with a clear parameter description and example. The description adds contextual meaning about checking KEV catalog but does not enhance parameter semantics beyond the schema.

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

Purpose4/5

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

The description clearly states the tool checks if a CVE is in the KEV catalog, with a specific verb ('check') and resource ('CVE in KEV catalog'). It is distinct from sibling tools like kev_search and kev_recent, though not explicitly contrasted.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as kev_search or kev_recent. The description only states the function without context on bulk checks or other scenarios.

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

kev_recentA

Get recently added KEV entries within the last N days.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back (default 30)

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It indicates a read operation ('Get') but does not disclose ordering, pagination, or response format. Adequate for a simple retrieval but lacks behavioral details.

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?

Single sentence that is front-loaded with the verb and resource. No extraneous words, efficiently conveys core purpose.

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

Completeness3/5

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

For a simple tool with one optional parameter and no output schema, the description is minimally sufficient. However, it omits details about what is returned (e.g., list of entries, full details). Completeness is adequate but not rich.

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?

Schema coverage is 100% with a clear description for the 'days' parameter (default 30 and meaning). The tool description does not add additional semantics beyond what the schema already provides, so baseline score applies.

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?

Description clearly states verb 'Get', resource 'recently added KEV entries', and constraint 'within the last N days'. This distinguishes it from sibling tools like kev_lookup, kev_search, and kev_stats, which have different scopes.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as kev_search or kev_lookup. The description does not specify context or exclusions, leaving the agent to infer usage.

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

kev_statsA

Get KEV catalog statistics: total count, top vendors, entries per year, and ransomware usage breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It implies a read-only operation ('Get'), but does not discuss side effects, authentication, rate limits, or data freshness. For a simple stats endpoint, some context is missing.

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?

The description is a single sentence (16 words) that immediately conveys the tool's output. It is front-loaded with the main action ('Get KEV catalog statistics') and lists the specific breakdowns, with no wasted words.

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

Completeness4/5

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

Given the tool has no parameters, no output schema, and no annotations, the description provides adequate context about the return values (total count, top vendors, entries per year, ransomware breakdown). It does not mention output format or pagination, but the simplicity of the tool makes this acceptable.

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

Parameters4/5

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

The input schema has zero parameters, so schema description coverage is 100%. The description adds no parameter info because none exist. Baseline for 0 parameters is 4, which 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 the tool's purpose: to 'Get KEV catalog statistics' including specific breakdowns (total count, top vendors, entries per year, ransomware usage). This distinguishes it from sibling tools like kev_lookup (individual lookups) and kev_search (searching).

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

Usage Guidelines4/5

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

The description implies usage for aggregate statistics and overview of the KEV catalog. It does not explicitly exclude alternative tools, but the purpose is clear enough that an agent can infer when to use this tool over siblings like kev_recent or kev_search.

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

libraries_dependentsB

Get packages that depend on a specific package from Libraries.io

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPackage platform, e.g. "NPM", "Pypi", "Cargo", "Go", "Maven", "NuGet"
nameYesPackage name

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose any behavioral traits beyond the basic function. No mention of pagination, rate limits, or result format, which are important for a tool that likely returns lists.

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?

Single, concise sentence that directly states the purpose with no unnecessary words. Front-loaded with the essential information.

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

Completeness4/5

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

For a simple tool with two required string inputs and no output schema, the description is adequate. However, it could mention that the result is a list of dependent packages, slightly reducing completeness.

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?

Schema coverage is 100%, with both parameters having descriptions. The tool description adds no extra meaning beyond the schema's parameter descriptions, so baseline 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?

Description clearly states the verb 'Get' and the resource 'packages that depend on a specific package', differentiating it from sibling tools like libraries_deps (dependencies) and libraries_package (package info).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives among the many sibling tools. Description does not mention when not to use it or provide any usage context.

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

libraries_depsB

Get dependencies for a specific package version from Libraries.io

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPackage platform, e.g. "NPM", "Pypi", "Cargo", "Go", "Maven", "NuGet"
nameYesPackage name
versionYesPackage version

TDQS

B3/5.0
Behavior2/5

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

No annotations provided; description only states purpose. Does not disclose rate limits, authentication, data freshness, or whether dependencies are direct or transitive. Minimal behavioral disclosure.

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

Conciseness3/5

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

Very concise single sentence, but it is under-specified. Could be improved by adding key details without becoming verbose. The brevity sacrifices substance.

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

Completeness2/5

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

With no output schema and no annotations, the description fails to explain the return format, error behavior, or scope of dependencies. Incomplete for reliable agent usage.

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?

Input schema provides full descriptions for all three parameters (100% coverage). Description adds no additional semantic value beyond the schema. Baseline score 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?

Description clearly states the verb ('Get dependencies'), resource ('package version'), and source ('Libraries.io'). It is specific enough to distinguish from many sibling tools that target specific ecosystems.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like platform-specific tools (e.g., crate_deps, gem_versions). Lacks context for appropriate usage.

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

libraries_packageA

Get package metadata from Libraries.io including repository info, versions, and popularity metrics

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPackage platform, e.g. "NPM", "Pypi", "Cargo", "Go", "Maven", "NuGet", "Rubygems"
nameYesPackage name

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the tool 'gets' metadata, implying a read operation, but does not mention any side effects, authentication requirements, rate limits, or error behavior. The lack of detail on what happens when inputs are invalid or results are empty is a gap.

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?

The description is a single, concise sentence that front-loads the core purpose without unnecessary words. Every word adds value, and the structure is clean and easy to parse.

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

Completeness3/5

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

Given no output schema, the description partially addresses return values by listing example content (repository info, versions, popularity metrics). However, it does not specify the exact format, pagination, or limits. For a simple lookup with few parameters and no nested objects, the description is adequate but not fully complete.

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?

Both parameters ('platform' and 'name') have descriptions in the schema, which already provide clear semantics. The description adds context about the output (repository info, versions, popularity metrics) but does not elaborate on the parameters themselves. With 100% schema coverage, the description meets the baseline without adding significant new meaning.

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?

Description clearly states the tool retrieves package metadata from Libraries.io, including specific details like repository info, versions, and popularity metrics. The verb 'Get' and the resource 'package metadata' are precise, and the tool name distinguishes it from sibling tools that focus on specific package managers or other Libraries.io functions.

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

Usage Guidelines3/5

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

The description implies usage for fetching package metadata from Libraries.io but lacks explicit guidance on when to use this tool versus specific package manager tools (e.g., npm_package, pypi_package). No alternatives or exclusions are mentioned, leaving the agent to infer context from the sibling list.

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

libraries_sourcerankB

Get the SourceRank quality score breakdown for a package from Libraries.io

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPackage platform, e.g. "NPM", "Pypi", "Cargo", "Go", "Maven", "NuGet"
nameYesPackage name

TDQS

B3/5.0
Behavior1/5

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

No annotations are provided, and the description fails to disclose any behavioral traits such as whether the operation is read-only, requires authentication, or has rate limits. The description offers no additional context beyond the tool's purpose.

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?

The description is a single, concise sentence that efficiently conveys the tool's purpose. No unnecessary words or information are present.

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

Completeness2/5

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

For a tool with no output schema, the description should provide hints about the return format or content. It does not mention what the breakdown includes, possible values of SourceRank, or any additional contextual information, making it incomplete for agent decision-making.

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 input schema already fully documents both parameters ('platform' and 'name') with descriptions. The tool description adds no extra meaning beyond what the schema provides, resulting in a baseline score of 3.

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 the action ('Get') and the specific resource ('SourceRank quality score breakdown for a package'), and it specifies the data source ('Libraries.io'). This distinguishes it from sibling tools like libraries_dependents and libraries_package, which focus on different aspects.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention use cases, prerequisites, or exclusions, leaving the agent to infer appropriate usage without context.

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

license_batchA

Batch license lookup for multiple components via ClearlyDefined.

ParametersJSON Schema
NameRequiredDescriptionDefault
coordinatesYesArray of ClearlyDefined coordinates, e.g. ['npm/npmjs/-/express/5.1.0', 'pypi/pypi/-/requests/2.31.0']

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only mentions the method ('via ClearlyDefined') but omits error handling, response behavior, or any side effects. Insufficient detail for a batch operation.

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?

One sentence, 10 words, front-loaded with the key action. No unnecessary information.

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

Completeness3/5

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

Despite good parametric documentation, the description lacks return value information (no output schema) and behavioral details like handling of partial failures. Adequate but not complete.

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?

Schema description coverage is 100%, so the schema already documents the 'coordinates' parameter well. The description adds no additional semantic meaning beyond what is in the schema.

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 states a specific verb ('lookup'), resource ('license'), and scope ('batch'), clearly distinguishing from single-lookup tools like license_lookup. No tautology.

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

Usage Guidelines3/5

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

The term 'batch' implies use for multiple components, but there is no explicit guidance on when to use this versus alternatives, nor any mention of when not to use it.

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

license_lookupB

Get curated license data for a software component from ClearlyDefined.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesPackage type: npm, pypi, maven, nuget, gem, crate, go, etc.
nameYesPackage name (use namespace/name for scoped packages)
versionYesPackage version

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It indicates a read operation ('Get curated license data') but does not disclose side effects, authentication, or what 'curated' implies. Acceptable but minimal.

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?

Single sentence, no fluff, conveys core purpose immediately. Optimal conciseness.

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

Completeness2/5

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

No output schema, and description does not hint at output structure (e.g., license identifier, text). Missing details on return format or behavior for exact version matching. Incomplete for a tool with no annotations or output schema.

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?

Schema has 100% coverage with descriptions for all three parameters (type, name, version). Description adds no additional meaning beyond the schema. Baseline 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?

Description clearly states verb 'Get', resource 'license data', and source 'from ClearlyDefined'. It distinguishes from siblings which perform different actions like badge, search, or batch operations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'license_batch' or 'license_search'. No mention of prerequisites or limitations.

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

npm_attestationsB

Fetch full Sigstore attestation bundles for an npm package version. Returns SLSA provenance and publish attestations when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name, e.g. 'express' or '@scope/pkg'
versionYesExact semver version, e.g. '4.18.2'

TDQS

B3.2/5.0
Behavior3/5

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

The description indicates the tool is read-only ('Fetch') and returns specific data (SLSA provenance and publish attestations) conditionally ('when available'). However, it does not disclose potential size of responses, error conditions, or any authentication/rate limit considerations. Since no annotations are provided, more details would be beneficial.

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?

The description consists of two concise sentences: the first states the action and resource, the second adds return details. Every word adds value with no redundancy.

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

Completeness2/5

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

Given the absence of an output schema, the description should explain the return structure in detail. It only mentions 'SLSA provenance and publish attestations' without describing the format, fields, or potential contents of the attestation bundles. This is insufficient for an agent to process the response correctly.

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?

Schema coverage is 100% with clear descriptions for both parameters (name and version). The description adds minimal extra meaning beyond the schema, mentioning 'full Sigstore attestation bundles' but not tying it to parameters. Baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses the specific verb 'Fetch' and identifies the resource as 'full Sigstore attestation bundles' for an npm package version. It clearly states what the tool does, but it does not explicitly distinguish it from the sibling tool 'npm_provenance', which might have overlapping functionality.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like npm_provenance. No when-not-to-use or prerequisite information is provided, leaving the agent without decision-making context.

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

npm_audit_bulkA

Bulk query npm security advisories for a set of packages and versions. Provide an object mapping package names to version arrays, e.g. {"express":["4.17.1"]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
packagesYesObject of package names to arrays of versions, e.g. {"express":["4.17.1"]}

TDQS

A3.7/5.0
Behavior2/5

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

The description mentions a query operation (read-only) but lacks details on authentication, rate limits, or any side effects. With no annotations provided, the description carries full burden and falls short.

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?

Two sentences, no unnecessary words. The example is directly useful. Highly efficient.

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

Completeness3/5

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

Given no output schema and no annotations, the description covers the input well but does not describe the output (e.g., returns list of advisories). This is a notable gap for completeness.

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

Parameters4/5

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

The input schema already describes the 'packages' parameter, but the description adds concrete formatting guidance with an example ('{"express":["4.17.1"]}'). This goes beyond the schema description, though schema coverage is 100%.

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 uses a specific verb ('query') and resource ('npm security advisories'), and clarifies it's for a bulk set of packages and versions. It distinguishes itself from sibling npm tools like npm_package or npm_search by focusing on bulk advisory queries.

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

Usage Guidelines3/5

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

The description implies usage for bulk advisory queries with an example, but does not explicitly state when to use this tool versus alternatives like deps_advisory or ghsa_package. No guidance on when not to use it.

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

npm_download_rangeA

Get day-by-day npm download counts for a date range. Useful for detecting download anomalies or sudden spikes that may indicate dependency confusion attacks.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name
startYesStart date in YYYY-MM-DD format
endYesEnd date in YYYY-MM-DD format

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It explains the tool returns day-by-day counts, but lacks details on data sources, rate limits, or potential errors.

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?

Two concise sentences: first states action, second provides a use case. No unnecessary words or repetition.

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

Completeness4/5

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

For a simple tool with three parameters and no output schema, the description is mostly sufficient. It implies the output but could state the return format more explicitly.

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 input schema already describes all three parameters thoroughly (100% coverage). The description adds only minor context (day-by-day nature) beyond the schema.

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

Purpose4/5

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

The description clearly states the tool gets day-by-day npm download counts for a date range. However, it does not distinguish from the sibling tool 'npm_downloads', which may have overlapping functionality.

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

Usage Guidelines4/5

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

The description provides a specific use case: detecting download anomalies or spikes for dependency confusion attacks. It does not mention when not to use it or alternatives, but the context is clear.

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

npm_downloadsA

Fetch npm download counts for a package over a given period (last-day, last-week, last-month).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name
periodNoDownload count periodlast-month

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It does not disclose potential errors (e.g., package not found), authentication needs, rate limits, or response format. The read-only nature is implied but not explicit.

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?

The description is a single sentence with no redundant words. It is front-loaded with the core action and includes the key parameter variation in parentheses.

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

Completeness3/5

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

For a simple tool with two parameters and no output schema, the description is adequate. It specifies the input and purpose but does not describe the return value structure. However, the scope is limited enough that this might be acceptable.

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?

Schema coverage is 100%, so baseline is 3. The description adds no new meaning beyond the schema; it restates the period options in parentheses. The schema already includes descriptions and enum for 'period'.

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 the verb 'Fetch' and the resource 'npm download counts for a package', and specifies the period options in parentheses. It distinguishes from sibling tools like npm_package or npm_download_range, which serve different purposes.

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

Usage Guidelines3/5

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

The description implies usage for fetching download counts but provides no explicit guidance on when to use this tool versus alternatives like npm_download_range or npm_package. No conditions or exclusions are mentioned.

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

npm_maintainersA

Extract maintainers and publish timeline from an npm package. Critical for detecting maintainer takeover attacks like the event-stream incident.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states what the tool extracts but does not disclose behavioral traits like network access, read-only nature, rate limits, or potential side effects. The extraction action is implied to be read-only, but not confirmed.

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?

The description is two sentences that front-load the core functionality and provide a concrete security example. No unnecessary words or repetition.

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

Completeness3/5

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

Without an output schema, the description does not specify the return format (e.g., list of maintainers with emails, timeline as dates). While the name and use case hint at the output, a brief note on structure would improve completeness.

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 only parameter 'name' has schema description 'npm package name', which is adequate. The tool description does not add further details or constraints. With 100% schema coverage, this meets the baseline of 3.

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 the tool extracts maintainers and publish timeline from npm packages, and explicitly ties it to a critical security use case (detecting maintainer takeover attacks like event-stream). This distinguishes it from sibling tools like npm_package or npm_version.

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

Usage Guidelines4/5

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

The description implies usage for security analysis of npm packages, but does not explicitly contrast with alternatives (e.g., npm_package for general info). The use case is clear, but lacks when-not-to-use guidance.

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

npm_packageA

Fetch npm package metadata including description, latest version, maintainers, license, repository, homepage, and publish timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name, e.g. 'express' or '@scope/pkg'

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description must carry burden. 'Fetch' implies read-only, but no mention of auth, rate limits, or side effects. Adequate but not comprehensive.

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?

Single efficient sentence listing key returned fields. No wasted words.

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

Completeness4/5

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

For a simple metadata fetch with one param and no output schema, listing specific fields suffices. Could mention return format or error cases, but not critical.

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?

Single parameter 'name' is fully described in schema (100% coverage). Tool description repeats fields but adds no new param-level details beyond schema.

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?

Description uses specific verb 'Fetch' and resource 'npm package metadata', listing concrete fields (description, latest version, etc.). Clearly distinguishes from siblings like npm_search or npm_version.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., npm_version for version data, npm_search for discovery). Lacks context or exclusion criteria.

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

npm_provenanceA

Check whether an npm package version has Sigstore provenance attestations and signatures. Key for detecting unauthorized publishes like the Axios-style attacks.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name
versionYesExact semver version

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It fails to mention if the tool requires authentication, makes network calls, or has rate limits. The return format is not described, leaving the agent uncertain about what output to expect.

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?

The description consists of two concise sentences: one stating the main function and one providing context. Every word is essential, and the information is front-loaded.

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

Completeness3/5

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

For a simple tool with two parameters and no output schema, the description covers the primary action but omits details about the return value (e.g., boolean, object) and error handling. This leaves minor gaps for an AI agent to infer.

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 input schema already provides descriptions for both 'name' and 'version' with 100% coverage. The description adds no additional parameter details beyond the schema, so it meets the baseline but does not enhance understanding.

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 the verb 'check' and the resource 'npm package version Sigstore provenance attestations and signatures'. It also provides context about detecting unauthorized publishes, making its purpose distinct from sibling tools like npm_attestations by focusing on provenance and signatures.

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

Usage Guidelines4/5

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

The mention of 'Key for detecting unauthorized publishes like the Axios-style attacks' provides clear context on when to use it. However, it does not explicitly state when not to use it or mention alternative tools, such as npm_attestations for broader attestation checks.

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

npm_scriptsA

Extract and analyze lifecycle scripts from a specific npm package version. Flags suspicious commands (curl, wget, eval, exec, etc.) commonly used in supply-chain attacks.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name
versionYesExact semver version

TDQS

A3.8/5.0
Behavior3/5

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

Describes script extraction and flagging of suspicious commands, but does not disclose whether scripts are executed, read-only nature, or any other behavioral traits. With no annotations, more detail expected.

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?

Two concise sentences front-loaded with purpose. No redundant words, efficient communication of functionality.

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

Completeness4/5

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

Simple tool with 2 parameters and no output schema; description adequately covers functionality. Could mention return format or error handling, but not critical for a focused analysis tool.

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?

Schema already describes both parameters (name and version) with clear descriptions; description adds no extra meaning. Baseline 3 justified as schema coverage is 100%.

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?

Description clearly states the tool extracts and analyzes lifecycle scripts from a specific npm package version, with specific mention of flagging suspicious commands. Distinguishes itself from sibling tools focused on general package info or other aspects.

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

Usage Guidelines3/5

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

Implied usage for analyzing lifecycle scripts in supply chain attacks, but no explicit guidance on when to use vs alternatives (e.g., npm_package). Missing when-not conditions.

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

npm_versionB

Fetch metadata for a specific npm package version including dependencies, dist info (tarball, shasum, integrity), scripts, and deprecation status.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesnpm package name
versionYesExact semver version, e.g. '4.18.2'

TDQS

B3.2/5.0
Behavior3/5

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

Without annotations, the description carries the burden of behavioral disclosure. It implies a read-only operation by describing metadata retrieval, but does not confirm side-effect free or mention authentication, rate limits, or response size. Sufficient for a simple fetch but lacks depth.

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

Conciseness4/5

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

Single sentence that quickly conveys purpose and content. No wasted words, but could be slightly more structured (e.g., list format). Front-loading is adequate.

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

Completeness4/5

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

Given two simple parameters and no output schema, the description covers the return fields (dependencies, dist info, scripts, deprecation status) well. It is complete enough for a basic read tool, though annotations would improve completeness.

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?

Schema description coverage is 100% (both 'name' and 'version' have descriptions). The tool description does not add further parameter meaning—it only describes what the response contains. Baseline 3 is appropriate as schema already documents parameters.

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

Purpose4/5

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

Description clearly states the tool fetches metadata for a specific npm package version and lists included fields (dependencies, dist info, scripts, deprecation status). This differentiates it from sibling tools like npm_package (general package info) and npm_scripts (scripts only), though it doesn't explicitly contrast them.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as npm_package or npm_search. The description does not mention expected input or output context, leaving the agent to infer usage from the tool name and siblings.

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

nuget_catalog_entryA

Get specific version details from NuGet including dependency groups, description, license, and catalog metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNuGet package name
versionYesPackage version

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It specifies what data is returned (dependency groups, description, etc.) but does not explicitly state it is a read-only operation or mention any required permissions, rate limits, or error behavior. The description adds some value beyond simple naming but lacks depth.

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?

The description is a single sentence of 16 words, concisely stating the tool's purpose and what it includes. It is front-loaded with the key action and resource, with no wasted words.

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

Completeness4/5

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

For a simple parameter structure (two required strings) and no output schema, the description adequately covers return content (dependency groups, description, etc.). It could be more complete by mentioning the return format or error scenarios, but it is sufficient for the tool's complexity.

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 input schema already describes the two parameters with 100% coverage ('NuGet package name' and 'Package version'). The description does not add any additional semantics, such as format constraints or case sensitivity. Given high schema coverage, the baseline score 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 uses a specific verb ('Get') and resource ('specific version details from NuGet'), clearly indicating it retrieves detailed information for a particular NuGet package version. It lists included fields (dependency groups, description, license, catalog metadata), making it distinct from sibling tools like 'nuget_package' (general info) and 'nuget_versions' (list of versions).

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit context for when to use or not use, and no alternative tools are mentioned. This forces the agent to infer usage from the name and sibling list.

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

nuget_packageB

Fetch NuGet package registration metadata including all versions, dependency groups, descriptions, and catalog entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNuGet package name, e.g. 'Newtonsoft.Json'

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Fetch' implying a read operation, but does not disclose any behavioral traits such as idempotency, error handling, rate limits, or potential side effects. The description is minimal and does not add value beyond the obvious.

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?

The description is a single, efficient sentence with no unnecessary words. It is front-loaded with the verb and resource, then lists included details.

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

Completeness4/5

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

Given no output schema or annotations, the description gives a reasonable overview of the output contents (versions, dependencies, descriptions, catalog entries). It could mention the response structure or potential limitations, but for a simple one-parameter tool it is nearly complete.

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?

Schema coverage is 100%, with a clear description and example for the only parameter. The tool description does not add any additional meaning beyond the schema, so baseline score 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 the verb 'Fetch', the resource 'NuGet package registration metadata', and enumerates the included details (all versions, dependency groups, descriptions, catalog entries). This distinguishes it from sibling tools like 'nuget_versions' (likely just versions) and 'nuget_search' (search).

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool compared to alternatives. No explicit 'when to use' or 'when not to use' context, nor mentions of prerequisites or exclusions. The sibling list is not referenced.

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

nuget_versionsB

List all published versions of a NuGet package from the flat container index.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNuGet package name

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description only mentions listing from a 'flat container index' without explaining behavior such as pagination, rate limits, or error handling. The description does not fully compensate for missing annotations.

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?

The description is a single, clear sentence with no unnecessary words. It is front-loaded and efficient.

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

Completeness3/5

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

For a simple list tool with one parameter and no output schema, the description provides the core functionality but lacks detail on what to expect (e.g., an empty list for invalid packages) and source context.

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?

Schema coverage is 100% with one required parameter 'name' described as 'NuGet package name'. The description adds no additional meaning beyond the schema, so baseline 3 applies.

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 it lists all published versions of a NuGet package from the flat container index. It uses a specific verb ('list') and resource ('versions of a NuGet package'), and is distinguishable from siblings like nuget_package or nuget_search.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. Siblings like nuget_package might also provide version info, but no distinction is made.

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

nvd_cveA

Fetch full CVE details from NVD (NIST National Vulnerability Database) by CVE ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier (e.g. CVE-2023-44487)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided. Description does not disclose rate limits, authentication requirements, return format, or any behavioral traits beyond 'fetch full details'. Lacks transparency for external API.

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?

Single sentence, front-loaded with action and resource. Every word is necessary and informative.

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

Completeness3/5

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

Tool is simple with one parameter and no output schema. Description covers basic purpose but does not specify return structure or potential errors. Adequate but minimal.

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?

Schema coverage is 100% and already describes the parameter. Description does not add new meaning beyond restating 'by CVE ID'. Expected baseline score for high coverage.

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?

Clearly states the action (fetch), resource (full CVE details), source (NVD), and input method (by CVE ID). Distinguishes from siblings like nvd_search and nvd_recent.

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

Usage Guidelines3/5

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

Implied use case (have a CVE ID, fetch its details). No explicit when-to-use, when-not-to-use, or alternative tools mentioned. Sibling tools like nvd_search or nvd_recent are not referenced.

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

nvd_recentA

Fetch recently published CVEs from NVD within a given number of days.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days back to search (default 7)
results_per_pageNoNumber of results to return (default 25)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It correctly indicates a read operation ('Fetch') but does not expand on potential behavioral traits like rate limits, pagination behavior, or response structure. The description is accurate but minimal.

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?

The description is a single concise sentence front-loaded with the action and resource. Every word contributes meaning, with no redundancy or fluff.

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

Completeness4/5

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

Given the tool's simplicity (2 optional parameters, read-only operation), the description covers the core action and scope. Without an output schema, more detail on return format could help, but the defaults and parameter descriptions provide adequate context for basic use.

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?

Schema coverage is 100% with both parameters ('days' and 'results_per_page') having descriptions including defaults. The tool description adds no additional semantic information beyond what is already in the schema, so the baseline score 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 the action 'Fetch', the resource 'recently published CVEs', and the scope 'within a given number of days'. It distinguishes from sibling tools like nvd_search (keyword search) and nvd_cve (specific CVE by ID) by focusing on recency and timeframe.

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

Usage Guidelines4/5

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

The description implies usage for fetching recent CVEs by number of days. It does not explicitly state when not to use or list alternatives, but the specificity of 'recently published' provides clear context that this is for time-based retrieval rather than search by ID or keyword.

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

osv_batchB

Batch query OSV database for vulnerabilities across multiple packages at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesArray of package queries to check

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. The description does not disclose behavioral traits such as rate limits, authentication needs, or error handling for partial failures.

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

Conciseness3/5

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

The description is very short and to the point, but may be too terse given the lack of annotations and output schema. It conveys the core purpose efficiently.

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

Completeness3/5

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

With no output schema or annotations, the description provides minimal context. It does not explain return values or error scenarios, leaving gaps for an agent.

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?

Schema coverage is 100%, so the schema already describes parameters adequately. The description adds no additional meaning beyond naming the action.

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

Purpose4/5

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

The description clearly states it is a batch query for vulnerabilities across multiple packages. However, it does not explicitly differentiate from sibling tools like osv_query, which may be for single queries.

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

Usage Guidelines3/5

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

The description implies use for multiple packages via 'batch', but lacks explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives.

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

osv_idA

Fetch full vulnerability details from OSV by ID (OSV, CVE, GHSA, RUSTSEC, PYSEC, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVulnerability ID (e.g. GHSA-xxxx-xxxx-xxxx, CVE-2023-1234, RUSTSEC-2023-0001)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description only says 'Fetch full vulnerability details'—it does not disclose read-only nature, error handling (e.g., missing ID), or any behavioral traits beyond the basic action. Acceptable for a simple fetch but lacks depth.

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?

A single, concise sentence that front-loads the action and resource, with no unnecessary words.

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?

Given the simple one-parameter, no-output-schema tool, the description fully covers what the tool does and what input is needed, leaving no significant gaps.

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 covers the single parameter with a full description of acceptable formats; the tool description adds only 'etc.' for other ID types, providing marginal extra value over the schema.

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 uses a specific verb 'Fetch' and resource 'full vulnerability details from OSV' and explicitly lists accepted ID formats (OSV, CVE, GHSA, etc.), clearly distinguishing it from sibling tools that query differently.

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

Usage Guidelines3/5

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

The description implies use when you have a specific ID, but provides no explicit guidance on when not to use it or alternatives like osv_batch or osv_query, leaving the agent to infer context from sibling names.

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

osv_queryB

Query OSV database for known vulnerabilities affecting a specific package and optional version.

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem (e.g. npm, PyPI, Go, crates.io, Maven)
nameYesPackage name
versionNoExact package version to check

TDQS

B3.4/5.0
Behavior3/5

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

Without annotations, the description carries full burden. It indicates a read operation (non-destructive) but lacks details on rate limits, authentication, error handling, or response format. The clarity that it queries vulnerabilities is minimal but adequate.

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?

The description is a single, straightforward sentence with no unnecessary words. It front-loads the action and resource, making it easy to parse.

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

Completeness2/5

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

The description omits important context like return format (list of vulnerability IDs/details) and the optional nature of the version parameter. Given no output schema, the agent lacks crucial information to interpret results.

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?

Schema coverage is 100% with descriptions for all parameters. The tool description does not add extra meaning beyond the schema, such as version format or default behavior when version is omitted. Baseline 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 it queries the OSV database for vulnerabilities, specifying action and resource. It distinguishes from sibling tools by focusing on package and optional version, differentiating from osv_query_commit and osv_query_purl.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like osv_id or osv_batch. It does not mention prerequisites, limitations, or scenarios where other tools would be more appropriate.

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

osv_query_commitB

Query OSV database for vulnerabilities associated with a specific git commit hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
commitYesGit commit hash to query

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only states that it queries vulnerabilities; no disclosure of error handling, rate limits, or what happens if commit is not found. Minimal transparency.

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?

Single sentence, clear and direct. No extraneous words, front-loaded with the purpose.

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

Completeness3/5

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

Adequate for a simple tool with one parameter, but lacks information about return format or edge cases. Since no output schema exists, description could be more complete.

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?

Schema coverage is 100% as the only parameter 'commit' has a description. The description adds 'git commit hash' which marginally improves clarity but adds little beyond schema. Baseline 3 applies.

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?

Description clearly states verb 'Query', resource 'OSV database', and scope 'vulnerabilities associated with a specific git commit hash'. It distinguishes from sibling tools like osv_id, osv_query_purl, and osv_batch by specifying the commit hash input.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus siblings (e.g., osv_query, osv_query_purl). No mention of prerequisites or context, leaving the agent to infer usage.

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

osv_query_purlB

Query OSV database using a Package URL (purl) for known vulnerabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault
purlYesPackage URL (e.g. pkg:npm/express@4.17.1)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must convey all behavioral traits. It only states the basic action without mentioning what happens on success/failure, rate limits, or any side effects. For a query tool, this is insufficient.

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

Conciseness4/5

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

The description is a single, direct sentence that is clear and free of redundancy. It is effectively front-loaded with the key action and input.

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

Completeness3/5

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

Given the tool has one parameter and no output schema, the description is adequate but lacks information about return values, error handling, or when to prefer this over similar tools. It is missing contextual details that would help an agent decide.

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 describes the purl parameter (100% coverage). The tool description adds no additional meaning beyond the schema, so it meets but does not exceed the baseline.

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 the tool's action ('Query'), the data source ('OSV database'), the input method ('using a Package URL (purl)'), and the output purpose ('for known vulnerabilities'). It distinguishes itself from siblings like osv_query and osv_query_commit by specifying the purl input.

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

Usage Guidelines3/5

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

The description implies when to use it (when you have a purl), but it does not provide explicit guidance on when not to use it or mention alternatives. For example, it doesn't compare to osv_query or osv_batch.

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

pypi_maintainersB

Extract author and maintainer information from a PyPI package. Useful for detecting ownership changes or suspicious maintainer patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPyPI package name

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It states the tool extracts information but does not mention side effects, permissions, rate limits, or that it is a read-only operation. This omission is significant for an unannotated tool.

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?

The description is two sentences long with no fluff. The action ('Extract') is front-loaded, and every sentence provides value. It is an example of efficient communication.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description is largely complete. It explains what the tool returns (author/maintainer info) and common use cases. However, it could briefly mention the return format or typical fields to be fully self-contained.

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 input schema has 100% description coverage for the single parameter 'name', with a clear description 'PyPI package name'. The tool description does not add extra semantic details beyond the schema, so it meets the baseline of 3.

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

Purpose4/5

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

The description clearly states the verb 'Extract' and the resource 'author and maintainer information from a PyPI package'. It distinguishes from sibling tools like pypi_package by focusing specifically on maintainer data, though it could be more precise about what information is extracted (e.g., emails, names).

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

Usage Guidelines3/5

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

The description provides usage context: 'useful for detecting ownership changes or suspicious maintainer patterns'. However, it does not explicitly state when not to use this tool (e.g., if only package metadata is needed) or mention alternatives like pypi_package. The guidance is clear but incomplete.

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

pypi_packageB

Fetch PyPI package metadata including author, license, summary, project URLs, classifiers, and Python version requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPyPI package name, e.g. 'requests' or 'django'

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden. It states the tool fetches metadata but does not disclose whether it is read-only, any rate limits, authentication needs, or whether the data might be cached. The description is minimal and lacks behavioral context beyond the basic action.

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?

The description is a single sentence that immediately states the verb and resource. It is concise, front-loaded, and contains no extraneous information.

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

Completeness4/5

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

Given the tool has only one parameter, no output schema, and no annotations, the description adequately covers the tool's purpose and expected outputs. It is complete for a simple metadata fetch operation.

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 input schema has one parameter ('name') with a descriptive example. Since schema coverage is 100%, the description adds no additional meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool fetches PyPI package metadata and lists specific data fields (author, license, summary, etc.). However, it does not differentiate from sibling tools such as pypi_version or pypi_maintainers, which also retrieve package-related information.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like pypi_version or pypi_releases. The description offers no context-specific usage advice.

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

pypi_releasesA

List all releases of a PyPI package with upload dates, sizes, and yanked status. Useful for detecting suspicious rapid version bumps or yanked releases.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPyPI package name

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as rate limits, authentication requirements, or side effects. It only states the listing function without any safety or behavior context.

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?

Two sentences: first clearly states functionality, second gives a practical use case. No unnecessary words, front-loaded with purpose.

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

Completeness4/5

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

Given the single parameter and no output schema, the description adequately covers the tool's purpose and output fields. However, it could be more complete by mentioning pagination or the full response format, but it is sufficient for this simple case.

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 single parameter 'name' is fully described in the input schema (100% coverage). The description does not add any additional semantics beyond what the schema provides, so baseline score 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 the action (list releases), the resource (PyPI package), and the output fields (upload dates, sizes, yanked status). It differentiates from siblings like pypi_package and pypi_version by focusing specifically on releases.

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

Usage Guidelines4/5

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

Provides a use case ('detecting suspicious rapid version bumps or yanked releases'), which guides the agent on when to use this tool. However, it does not explicitly state when not to use it or mention alternative siblings.

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

pypi_versionA

Fetch metadata for a specific PyPI package version including release URLs with upload times, file sizes, digests, and yanked status.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPyPI package name
versionYesExact version string, e.g. '2.31.0'

TDQS

A3.5/5.0
Behavior3/5

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

The description implies a read-only operation by stating it fetches metadata, but it does not explicitly declare it as non-destructive or disclose potential errors (e.g., package not found) or API behavior. With no annotations, the description is minimally adequate.

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?

The description is a single sentence that efficiently communicates the tool's functionality, front-loading the main action and detailing included metadata with no wasted words.

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

Completeness3/5

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

The description adequately states the input and data included, but does not describe the output structure or format. Given no output schema, the description could be more complete by hinting at the response shape, but for a simple tool it remains sufficient.

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 input schema already fully describes both parameters with clear descriptions and an example for version. The tool description does not add any additional parameter semantics beyond confirming the tool's purpose. With 100% schema coverage, a baseline score 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 uses the verb 'Fetch' with the resource 'metadata for a specific PyPI package version' and enumerates included data (release URLs, upload times, file sizes, digests, yanked status). This clearly differentiates from sibling tools like pypi_package (package overview) and pypi_releases (list versions).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as pypi_package or pypi_releases. It does not state when not to use or any prerequisites.

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

rekor_entryA

Retrieve a specific Rekor transparency log entry by UUID, including body, attestation, and inclusion proof

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesRekor entry UUID (64 or 80 hex character string)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the tool returns entry details, but lacks info on authentication, rate limits, or safety (though retrieve is inherently read-only). The description is adequate but not thorough.

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?

A single well-structured sentence that efficiently conveys the action, input, and output. No unnecessary words.

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

Completeness4/5

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

For a low-complexity tool (one parameter, no output schema), the description covers the main aspects. It could mention if any return format or limits apply, but it's sufficient for basic use.

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

Parameters4/5

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

Schema coverage is 100% for the single required parameter 'uuid'. The description adds specificity: '64 or 80 hex character string', which is not in the schema. This gives the agent clearer format expectations.

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 the tool retrieves a specific Rekor transparency log entry by UUID and lists the returned components (body, attestation, inclusion proof). This distinguishes it from sibling tools like rekor_search (which searches) and rekor_verify (which verifies). The verb 'retrieve' and resource 'Rekor transparency log entry' are specific.

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

Usage Guidelines3/5

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

The description implies usage when you have a specific UUID, but it does not explicitly guide when to use this tool versus siblings like rekor_entries_search or rekor_search. No exclusions or alternative suggestions are provided.

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

rekor_log_infoA

Get the current Rekor transparency log status including rootHash, treeSize, signedTreeHead, and treeID

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It does not disclose whether the operation is read-only, requires authentication, or has any side effects. Although 'get' implies a read, the description misses an opportunity to explicitly state behavioral traits like safety or latency.

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?

Single sentence, efficiently states purpose and returned fields. No extraneous words. Front-loads the action and result.

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

Completeness4/5

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

For a parameterless read tool, the description is sufficient: it clarifies the purpose and output fields. However, it could briefly explain the significance of the returned fields (e.g., 'the latest signed tree head') or mention that it returns a JSON object. Given no output schema, slight additional context would improve completeness.

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

Parameters4/5

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

There are no parameters, and schema coverage is 100% (trivially). The description adds value by listing the returned fields (rootHash, treeSize, signedTreeHead, treeID), which are not documented in the input schema. This helps the agent understand what information the tool provides.

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 uses a specific verb ('Get') and resource ('Rekor transparency log status'), and lists the exact fields returned (rootHash, treeSize, signedTreeHead, treeID). It clearly distinguishes from sibling tools like rekor_entry or rekor_search which deal with individual entries.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. However, the purpose and zero parameters imply it's for global log status, contrasting with entry-specific sibling tools. The description could mention it's for obtaining the current log checkpoint.

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

rekor_verifyA

Verify whether a SHA256 artifact hash has been recorded in the Rekor transparency log, returning entry details if found

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesSHA256 hash of the artifact to verify, with or without "sha256:" prefix

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly describes the operation (verification, returning entry details if found) and implies read-only behavior. However, it could explicitly state that it is non-destructive or read-only.

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?

The description is a single sentence with no wasted words. It front-loads the purpose and is appropriately concise.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description adequately covers the input (hash) and output (entry details if found). It is complete enough, though it could briefly mention that no result indicates the hash is not recorded.

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?

Schema coverage is 100%, and the schema description for the 'hash' parameter already provides the same detail as the tool description (SHA256 hash with optional 'sha256:' prefix). The description does not add additional parameter semantics beyond what the schema already provides, meeting the baseline.

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 the verb 'Verify', the resource 'SHA256 artifact hash', and the system 'Rekor transparency log', with the outcome 'returning entry details if found'. It distinguishes this tool from siblings like rekor_entry (get specific entry) and rekor_search (search by criteria).

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

Usage Guidelines3/5

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

The description implies usage for verifying a hash presence, but it does not explicitly state when not to use this tool or mention alternatives (e.g., for broader searches). The context is clear but lacks exclusions or comparisons.

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

repology_problemsB

Find packaging problems/issues for a repository on Repology.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name, e.g. 'ubuntu_24' or 'fedora_40' or 'homebrew'

TDQS

B3.1/5.0
Behavior1/5

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

No annotations provided, and the description fails to disclose any behavioral traits such as read-only nature, output format, rate limits, or what constitutes 'problems'. This is a significant gap.

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

Conciseness4/5

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

Description is concise with one sentence and no wasted words. However, it is too sparse and lacks necessary context, which reduces effectiveness despite brevity.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description is inadequate. It does not explain the return format, pagination, or what constitutes problems/issues, leaving the agent with insufficient information.

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?

Schema description coverage is 100% (the only parameter 'repo' has a description with examples). The tool description does not add any further semantic information beyond what the schema already provides, so baseline 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?

Description clearly states the verb 'Find' and resource 'packaging problems/issues' for a repository on Repology. It distinguishes from sibling tools like repology_project and repology_search.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The description implies usage for finding problems but does not provide when-not-to-use or mention other repology tools.

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

repology_projectA

Get package versions across all Linux distributions from Repology.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name, e.g. 'nginx' or 'python'

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It does not mention rate limits, data freshness, or if only latest versions are returned. The description lacks depth beyond the basic function.

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?

The description is a single, concise sentence with no unnecessary words. It is front-loaded and efficient.

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

Completeness3/5

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

Given the tool has only one parameter and no output schema, the description is adequate but lacks information about return format, pagination, or potential errors. It is minimally complete for a simple lookup tool.

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?

Schema coverage is 100%, and the parameter 'name' is described with examples. However, the description adds no additional meaning beyond the schema, which already explains the purpose. Baseline score is 3.

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 the verb 'Get' and the resource 'package versions' with scope 'across all Linux distributions'. It effectively distinguishes from sibling tools like repology_search which is for searching projects.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. The tool is straightforward (one required parameter), but there is no mention of alternatives like repology_search for broader searches.

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

scorecard_compareB

Compare OpenSSF Scorecard security scores across 2-5 GitHub repositories side by side

ParametersJSON Schema
NameRequiredDescriptionDefault
reposYesArray of {owner, repo} objects to compare (2-5 repos)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description provides no behavioral details beyond purpose. It does not mention output format, error handling, rate limits, or authentication requirements, leaving significant gaps.

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?

Single sentence of 10 words directly states the core functionality with no redundancy. Every word earns its place.

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

Completeness2/5

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

With only one parameter, no output schema, and no annotations, the description is too minimal. It omits what 'side by side' means in output terms and assumes domain knowledge of OpenSSF Scorecard.

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?

Schema coverage is 100% and fully describes the 'repos' parameter. The description echoes constraints but adds no new meaning or context beyond the schema.

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?

Clearly states the verb 'compare', the specific resource 'OpenSSF Scorecard security scores', and the constraint of 2-5 GitHub repositories, distinguishing it from sibling 'scorecard_repo' for single repos.

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

Usage Guidelines3/5

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

Implicitly suggests usage for multiple repos by stating '2-5 GitHub repositories', but lacks explicit when-to-use or alternatives. Sibling tools include 'scorecard_repo', but no direct guidance.

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

scorecard_repoA

Get the OpenSSF Scorecard security score for a GitHub repository, including individual check results

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesGitHub repository owner
repoYesGitHub repository name

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It implies a read operation but doesn't disclose specific behaviors such as rate limits, authentication needs, or data freshness. It is adequate but not detailed.

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?

Single sentence, no unnecessary words. Efficiently conveys the tool's action and return value.

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

Completeness4/5

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

Given the simplicity (2 params, no output schema), the description covers the main purpose. It mentions both the score and individual results, but lacks specifics on return format or value range.

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?

Schema has 100% description coverage for both parameters. The description does not add meaning beyond what the schema already provides (owner and repo are self-explanatory).

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 the verb 'Get', the resource 'OpenSSF Scorecard security score', and includes that individual check results are returned. It distinguishes from sibling 'scorecard_compare' by focusing on a single repository.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'scorecard_compare'. No context about prerequisites or typical scenarios.

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

supplychain_list_sourcesA

List all 21 supply chain security data sources with their configuration status, required environment variables, available tools, and API base URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description adequately states it lists sources and returns configuration status, env vars, tools, and API URLs. No side effects or additional behavioral context are provided.

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?

A single, front-loaded sentence with zero wasted words. Efficiently communicates the action and output.

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

Completeness4/5

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

For a zero-parameter tool with no output schema, the description is complete in stating what the tool does and what it returns. Could be improved by noting it's a list of endpoints.

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

Parameters4/5

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

No parameters exist, so baseline is 4. The description adds value by specifying the output fields beyond the schema, though schema coverage is 100%.

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 'List all 21 supply chain security data sources' with specific details returned. This distinguishes it from sibling tools that query individual sources.

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

Usage Guidelines3/5

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

The description implies using this tool to get an overview, but lacks explicit guidance on when to use versus alternatives or when not to use. No exclusions are mentioned.

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

typosquat_checkA

Check if a package name is suspiciously similar to popular packages (potential typosquatting). Returns matches with edit distance <= 2.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPackage name to check for typosquatting
ecosystemNoPackage ecosystem: "npm" or "pypi" (default: "npm")npm

TDQS

A4/5.0
Behavior4/5

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

The description discloses the key behavioral trait: returns matches with edit distance <= 2. Since no annotations exist, this adds important context. However, it does not detail what happens with no matches or how popular packages are determined.

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?

The description is two sentences, highly concise, and front-loaded with the main action. Every phrase adds value.

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

Completeness4/5

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

For a simple tool with two parameters and no output schema, the description covers the core behavior and threshold. Minor gaps exist about the reference list of popular packages, but overall sufficient.

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?

Schema coverage is 100%, so baseline is 3. The description adds context about 'popular packages' but does not enrich parameter meaning beyond the schema's descriptions.

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 the tool's purpose: checking if a package name is similar to popular packages for typosquatting, with a specific edit distance threshold. It distinguishes from sibling 'typosquat_compare' by focusing on similarity detection.

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

Usage Guidelines3/5

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

The description implies usage for typosquatting detection but does not explicitly guide when to use this tool versus alternatives like 'typosquat_compare'. No exclusions or prerequisites are mentioned.

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

typosquat_compareA

Compare two package names directly to assess typosquatting risk, showing edit distance, similarity percentage, character-level diff, and confusable character warnings

ParametersJSON Schema
NameRequiredDescriptionDefault
name_aYesFirst package name
name_bYesSecond package name

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description should disclose behavioral traits. It describes what the tool shows but does not mention side effects, authentication needs, rate limits, or whether it is read-only. The description is adequate but incomplete for a non-annotated tool.

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

Conciseness4/5

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

The description is a single sentence that is concise and front-loaded with the main action. It could benefit from slight restructuring for readability, but it is efficient.

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

Completeness4/5

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

Given the low complexity (2 simple params, no output schema), the description sufficiently explains the tool's purpose and outputs. It could mention the output format or return value, but it is mostly complete for an agent.

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?

Schema coverage is 100% with descriptions for both parameters. The description only restates that they are package names, adding no extra meaning beyond the schema. Baseline 3 applies.

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?

Description clearly states the tool compares two package names for typosquatting risk and lists specific outputs (edit distance, similarity, diff, confusable warnings). It distinguishes from sibling typosquat_check, which likely checks a single name against known patterns.

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

Usage Guidelines3/5

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

The description implies usage when comparing two specific names, but does not explicitly guide when to use vs. typosquat_check or other tools. No when-not-to-use or prerequisites are mentioned.

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. 90 tool updatesv0.1.0
    • First observedbadge_by_repo
    • First observedbadge_project
    • First observedbadge_search
    • First observedcomposer_advisories
    • First observedcomposer_package
    • First observedcomposer_search
    • First observedcomposer_stats
    • First observedcrate_deps
    • First observedcrate_info
    • First observedcrate_owners
    • First observedcrate_versions
    • First observeddeps_advisory
    • First observeddeps_dependencies
    • First observeddeps_dependents
    • First observeddeps_package
    • First observeddeps_project
    • First observeddeps_purl_lookup
    • First observeddeps_query
    • First observeddeps_requirements
    • First observeddeps_similar_packages
    • First observeddeps_version
    • First observedepss_above_threshold
    • First observedepss_batch
    • First observedepss_score
    • First observedepss_top
    • First observedgem_info
    • First observedgem_reverse_deps
    • First observedgem_search
    • First observedgem_versions
    • First observedghsa_id
    • First observedghsa_package
    • First observedghsa_recent
    • First observedghsa_search
    • First observedgo_module
    • First observedgo_sum
    • First observedgo_version
    • First observedgo_vuln_by_module
    • First observedgo_vuln_db_info
    • First observedgo_vuln_id
    • First observedgo_vuln_list
    • First observedkev_lookup
    • First observedkev_recent
    • First observedkev_search
    • First observedkev_stats
    • First observedlibraries_dependents
    • First observedlibraries_deps
    • First observedlibraries_package
    • First observedlibraries_sourcerank
    • First observedlicense_batch
    • First observedlicense_lookup
    • First observedlicense_search
    • First observednpm_attestations
    • First observednpm_audit_bulk
    • First observednpm_download_range
    • First observednpm_downloads
    • First observednpm_maintainers
    • First observednpm_package
    • First observednpm_provenance
    • First observednpm_scripts
    • First observednpm_search
    • First observednpm_version
    • First observednuget_catalog_entry
    • First observednuget_package
    • First observednuget_search
    • First observednuget_versions
    • First observednvd_cve
    • First observednvd_recent
    • First observednvd_search
    • First observedosv_batch
    • First observedosv_id
    • First observedosv_query
    • First observedosv_query_commit
    • First observedosv_query_purl
    • First observedpypi_maintainers
    • First observedpypi_package
    • First observedpypi_releases
    • First observedpypi_version
    • First observedrekor_entries_search
    • First observedrekor_entry
    • First observedrekor_log_info
    • First observedrekor_search
    • First observedrekor_verify
    • First observedrepology_problems
    • First observedrepology_project
    • First observedrepology_search
    • First observedscorecard_compare
    • First observedscorecard_repo
    • First observedsupplychain_list_sources
    • First observedtyposquat_check
    • First observedtyposquat_compare

TDQS

B3/5.0

Scored across 90 tools

Disambiguation4/5

Most tools are clearly separated by ecosystem prefix and specific purpose, so an agent can usually tell them apart. There are a few boundary overlaps, such as npm_package vs npm_maintainers and npm_provenance vs npm_attestations, which could cause occasional misselection.

Naming Consistency4/5

Tool names follow a consistent ecosystem_prefix + noun pattern, with mostly snake_case throughout. Minor inconsistencies exist in verb choice (search/lookup/query/fetch) and a few odd names like epss_above_threshold and rekor_entries_search, but overall the pattern is predictable.

Tool Count1/5

With 90 tools, this server is far beyond the recommended scope for effective agent coherence. Even though the domain is broad, this many tools creates significant navigation and selection overhead for an agent.

Completeness4/5

The server covers an impressively wide range of supply-chain security data: package registries, vulnerability databases, dependency graphs, provenance, licenses, scorecards, and transparency logs. Some gaps exist, such as no direct Maven/Java support and no dedicated PyPI or crates.io search, but the core supply-chain investigation workflows are well covered.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that integrates SAST, DAST, and SCA security tools to enable AI-driven vulnerability scanning and automated security reporting. It allows AI assistants to execute and analyze results from tools like Semgrep, OWASP ZAP, and Trivy within a DevSecOps workflow.
    6
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP security server for AI coding agents. 12 tools: pre-install guardian, vulnerability audit, supply-chain attack detection via static code analysis, and CycloneDX 1.6 SBOM generation. Zero runtime dependencies.
    14
    35 npm
    15
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Unifies NVD, EPSS, CISA KEV, GitHub Advisory, and OSV into a single MCP server, enabling AI agents to query vulnerability intelligence conversationally with 23 tools for incident response, prioritization, dependency audits, and threat monitoring.
    41
    308 npm
    27
    MIT