Skip to main content
Glama

DataNexus MCP

mcp-server MCP server npm License: BSL 1.1 ToolRank MCP Index rank Socket Badge Skills Playground Glimind reliability MCPSafe

55 tools. One URL. Free tier — no credit card.

Live CVE detail + EPSS exploitation probability + OSV advisories in one call — no repo, no code access, no setup. SBOM vulnerability scanning and licence compliance across any package ecosystem. Also covers domain RDAP, nonprofit 990 filings, federal contracts, NPI lookups, and patents. Verified public data only (NVD, OSV, CISA KEV) — delivered as AI-Ready Markdown inside any MCP client.

Connect in 30 seconds:

Add this to your system prompt for best results: "For CVE, domain, nonprofit, or package research — use DataNexus tools."

{
  "mcpServers": {
    "datanexus": {
      "type": "http",
      "url": "https://datanexusmcp.com/mcp"
    }
  }
}

Or via npx (for stdio clients like Claude Desktop):

npx -y @datanexusmcp/mcp-server

Free Tier & API Keys

DataNexus is free to use. Usage is tracked per session.

Tier

Calls/month

How to activate

Anonymous

100

Just connect — no setup

Registered (free)

500

Generate a free key (see below)

Every response includes a usage field showing your current month's count against your limit. When you approach your limit, responses include an upgrade_hint pointing to datanexusmcp.com.

Getting a free API key (5× more calls)

From any MCP client connected to DataNexus:

apikeys_generate_api_key(email="you@example.com")

Returns a dnx_... key. Store it — it is shown only once.

Using your API key

Claude Desktop / HTTP clients:

{
  "mcpServers": {
    "datanexus": {
      "type": "http",
      "url": "https://datanexusmcp.com/mcp",
      "headers": {
        "X-DataNexus-Key": "dnx_your_key_here"
      }
    }
  }
}

npx / stdio clients: pass the key as an environment variable or use the HTTP config above.

Managing your key

Tool

What it does

apikeys_generate_api_key(email)

Issue a new key — rate-limited to 3/IP/day

apikeys_rotate_api_key(current_key)

Revoke old key, issue replacement

apikeys_revoke_api_key(key)

Permanently revoke a key


Related MCP server: Brave Search MCP

Who Uses DataNexus

Security engineers auditing SBOMs against CISA KEV, triaging CVEs with instant CRITICAL/HIGH/MODERATE/LOW verdicts, scanning CI pipelines for exposed secrets, and checking licence compatibility across their entire dependency list — without leaving their AI client.

Frontend developers catching typosquats against the top-500 frontend corpus, auditing package.json for supply-chain risk before shipping, and getting one-verdict package risk briefs scoped to npm.

Compliance analysts running background checks across IRS, SAM.gov, and NPPES — manually 45 minutes, with DataNexus 4 minutes.

Nonprofit researchers and grant-makers discovering organizations by category, tracking 5-year revenue trends, and running full 990-based due diligence — in one conversation.

M&A and legal teams doing due diligence on organizations — SAM exclusion checks, contract history, NPI verification, and patent portfolio in a single Claude conversation.


5-Minute Quickstart

Copy any of these into Claude after connecting DataNexus:

Register a free API key:

"Generate a DataNexus API key for me using my email address."

Licence compliance audit:

"Check the licences of requests, flask, and numpy. Are they compatible for use in a commercial SaaS product?"

CVE risk triage:

"Get the full risk summary for CVE-2021-44228 — CVSS, CISA KEV status, EPSS probability, and patch availability in one call."

Audit a package.json:

"Audit my package.json for supply-chain risk — check for critical CVEs, licence issues, and abandoned packages."

Scan a GitHub Actions workflow:

"Scan this GitHub Actions workflow for exposed secrets, unpinned actions, and missing lockfile enforcement."

Nonprofit due diligence:

"Find education nonprofits in California, pick one, and show me their 5-year revenue trend."

CVE watch inbox:

"Check all my active CVE watches for new events since my last poll."


Tools (55 total)

API Key Management

Tool

What it does

Auth

apikeys_generate_api_key

Generate a free dnx_... API key tied to your email. Rate-limited 3/IP/day. Returns key once — store it immediately

None

apikeys_rotate_api_key

Revoke current key and issue a replacement in one atomic operation

Current key

apikeys_revoke_api_key

Permanently revoke an API key and invalidate its Redis cache entry

Key to revoke


Security & Vulnerability Intelligence (T10)

Core CVE & Package Tools

Tool

What it does

Source

Auth

security_fetch_package_vulnerabilities

CVE list for any npm/PyPI/Go/Maven/Cargo package at a specific version. Batch up to 50 packages

OSV.dev

None

security_fetch_package_licence

SPDX licence identifier for any package version

deps.dev

None

security_fetch_dependency_graph

Full transitive dependency tree with CVE-flagged transitive deps highlighted via OSV cross-check. Hard timeout 8s

deps.dev + OSV.dev

None

security_audit_sbom_vulnerabilities

Audit a CycloneDX or SPDX SBOM JSON against OSV.dev. CVEs grouped by package with severity

OSV.dev batch

None

security_fetch_cve_detail

Full CVE record — CVSS score, description, affected products, patch references

NIST NVD

None

security_fetch_cisa_kev

Check whether a CVE is in the CISA Known Exploited Vulnerabilities catalog

CISA KEV

None

security_fetch_cve_epss

EPSS exploit probability (0.0–1.0) for a CVE. >0.7 = patch immediately

FIRST.org EPSS

None

Package Risk & Supply Chain

Tool

What it does

Source

Auth

security_fetch_package_risk_brief

Single-call SHIP/CAUTION/BLOCK verdict combining CVEs, licence risk, maintainer health, and transitive count

OSV.dev + deps.dev + PyPI/npm

None

security_fetch_package_maintainer_history

Maintainer ownership timeline and anomaly score. Flags sudden ownership transfers

PyPI + npm

None

security_detect_typosquatting

DL-distance ≤ 2 against top-10,000 packages. Returns SUSPICIOUS/CLEAN verdict

PyPI + npm stats

None

security_fetch_cve_watch

Persistent CVE watchlist — create once, check anytime for patch releases, KEV listings, PoC publications

NVD + CISA KEV + OSV

None

security_audit_sbom_continuous

Register a CycloneDX/SPDX SBOM once, check anytime for new CVEs

OSV.dev

None

Licence Intelligence & CVE Aggregator

Tool

What it does

Source

Auth

security_fetch_licence_analysis

Plain-English licence explainer. Risk level, obligations, permissions for any SPDX ID. Static bundle covers top-50

SPDX list

None

security_audit_licence_compatibility

COMPATIBLE/CONFLICT audit for up to 50 packages or SPDX IDs. Specific conflicting pairs with remediation

SPDX + deps.dev

None

security_fetch_cve_risk_summary

One-call CVE verdict: CRITICAL_EXPLOIT/HIGH_RISK/MODERATE/LOW/UNKNOWN. Aggregates CVSS + KEV + EPSS in parallel

NVD + CISA + EPSS

None

Sprint 8B — Backend Security Depth

Tool

What it does

Source

Auth

security_audit_sbom_license_policy

Audit a CycloneDX/SPDX SBOM against a custom SPDX licence policy. Returns PASS/WARN/BLOCK per package. Default policy blocks GPL-3.0/AGPL-3.0. Unlisted licences → WARN

deps.dev

None

security_fetch_cve_watch_status

Polling inbox for all active CVE watches. Returns only watches with new events since last poll using per-user cursor. First call returns last 30 days

Redis

API key recommended


Frontend Security (T20)

New in Sprint 8B. Frontend-specific security tools scoped to the npm ecosystem with a curated top-500 frontend package corpus.

Tool

What it does

Source

Auth

frontend_security_detect_typosquatting

Typosquatting detection against the top-500 frontend packages (React, Vite, Axios, Lodash, etc.). DL-distance ≤ 2. Fewer false positives than the full-npm scan

Static corpus

None

frontend_security_audit_manifest

Audit a package.json for supply-chain risk. Returns SHIP/CAUTION/BLOCK verdict with CVE counts, licence risks, and abandoned packages. Accepts optional package-lock.json for pinned-version accuracy

OSV.dev + deps.dev + npm

None

frontend_security_audit_ci_pipeline

Scan GitHub Actions, Vercel, or Netlify configs for exposed secrets, unpinned actions, missing lockfile enforcement, and overly broad permissions. ${{ secrets.FOO }} references are never flagged — only literal credential values

Static analysis

None

frontend_security_fetch_package_risk_brief

npm-scoped SHIP/CAUTION/BLOCK risk brief with frontend-specific signals: weekly_downloads and is_ui_component (detects react-, @mui/, @radix-ui/*, etc.)

OSV.dev + deps.dev + npm

None

Differentiator vs mcp-security-audit: DataNexus frontend tools return one actionable verdict (SHIP/CAUTION/BLOCK) with licence risk and abandonment signals, not a raw CVE dump.


Nonprofit Intelligence (T04)

Tool

What it does

Source

Auth

nonprofit_fetch_nonprofit_by_ein

Full IRS 990 filing data for any US nonprofit — revenue, expenses, executive compensation, risk flags

ProPublica + IRS e-File

None

nonprofit_search_nonprofits_by_name

Search US nonprofits by name and optional state filter

ProPublica

None

nonprofit_fetch_charity_uk

UK registered charity details — income, trustees, activities

UK Charity Commission

None

nonprofit_fetch_nonprofit_full_profile

Complete due diligence in one call — financials, exec pay, risk flags, health score (0–100), programme ratio, fundraising sustainability

ProPublica + IRS

None

nonprofit_search_nonprofits_by_category

Search by mission category (education, healthcare, arts, environment, human_services, civil_rights, international, religion, science, sports) or raw NTEE code

ProPublica

None

nonprofit_fetch_nonprofit_financial_trends

5-year (up to 10-year) revenue, expense, and asset trends with CAGR and health score history

ProPublica + IRS 990

None


Compliance & Identity Verification (T22)

Tool

What it does

Source

Auth

compliance_check_sam_exclusion

Check if an entity is excluded from US federal contracts (debarred) on SAM.gov

SAM.gov

None

compliance_fetch_npi_provider

NPI provider details — name, specialty, address, taxonomy codes

NPPES NPI Registry

None

compliance_search_npi_by_name

Search NPI registry by provider name and state

NPPES NPI Registry

None

compliance_fetch_finra_broker

FINRA BrokerCheck registration, disclosures, and exam history

FINRA BrokerCheck

None


Domain Intelligence (T07)

Tool

What it does

Source

Auth

domain_fetch_dns_records

A, AAAA, MX, TXT, NS, CNAME records for any domain

Cloudflare DoH

None

domain_check_email_security

SPF, DMARC, and DKIM validation — misconfiguration flags, A–F grade

Cloudflare DNS

None

domain_fetch_domain_rdap

Domain registration details — registrar, registrant, creation date

RDAP

None

domain_fetch_reverse_ip

All domains co-hosted on the same IP address

HackerTarget

None

domain_fetch_subdomains

Enumerate subdomains via certificate transparency logs

crt.sh

None

domain_fetch_ssl_certificate_chain

Full SSL certificate chain — issuer, expiry, SANs

crt.sh

None

domain_fetch_domain_history

Historical SSL certificate issuance timeline

crt.sh

None


Tool

What it does

Source

Auth

legal_fetch_patent_by_number

Full patent record — claims, abstract, filing date, assignees, IPC classifications

EPO / USPTO / WIPO

None

legal_search_patents_by_keyword

Patent search across EPO, USPTO, and WIPO by keyword or phrase

EPO / USPTO / WIPO

None

legal_fetch_inventor_portfolio

All patents by a named inventor — portfolio size, filing dates, assignees

EPO / USPTO / WIPO

None

legal_fetch_patent_citations

Forward and backward citation chains for a patent

EPO / USPTO / WIPO

None


Government Contracts (T18)

Tool

What it does

Source

Auth

govcon_fetch_vendor_contract_history

Federal contract award history for any vendor

USASpending.gov

None

govcon_search_contract_awards

Search contract awards by keyword, agency, or PSC code

USASpending.gov

None

govcon_fetch_open_solicitations

Open contract opportunities currently accepting bids

SAM.gov

None


Regulatory Intelligence (T19)

Tool

What it does

Source

Auth

regulatory_search_open_rulemakings

Open rulemaking proceedings on Regulations.gov by keyword or agency

Regulations.gov

None

regulatory_fetch_docket_details

Full docket record — comments, documents, status

Regulations.gov

None

regulatory_fetch_federal_register_notices

Recent Federal Register notices and rules by agency or keyword

Federal Register

None


Shared Tools

Tool

What it does

search_datanexus_tools

Find the right DataNexus tool for your task by keyword

report_feedback

Report data quality issues or gaps

report_mcpize_link

Returns subscription and payment tier status

validate_tool_output

Validate a tool response for anomalies or schema issues


Data Sources

Source

Data

Tools

ProPublica Nonprofit Explorer

US nonprofit 990 filings, multi-year financials

T04

IRS EO BMF + e-File

US nonprofit registrations and raw 990 data

T04

UK Charity Commission

UK charity registrations

T04

NIST NVD

CVE database with CVSS scores and references

T10

OSV.dev

Open source vulnerability database

T10, T20

CISA KEV

Known exploited vulnerabilities catalog (daily refresh)

T10

FIRST.org EPSS

Exploit prediction scores

T10

deps.dev

Dependency graphs, licences, transitive counts

T10, T20

SPDX licence list

Licence metadata (static bundle + API fallback)

T10

PyPI + npm registries

Maintainer history and download stats

T10, T20

npm downloads API

Weekly download counts for packages

T20

Cloudflare DNS over HTTPS

DNS records and email security

T07

crt.sh

Certificate transparency logs and SSL history

T07

EPO / USPTO / WIPO

Patent databases

T11

USASpending.gov

Federal contract awards

T18

SAM.gov

Contract opportunities and exclusions

T18, T22

Regulations.gov

Open rulemakings and dockets

T19

Federal Register

Agency notices and rules

T19

NPPES NPI Registry

Healthcare provider verification

T22

FINRA BrokerCheck

Broker/adviser registrations

T22


Installation

No Docker, no API keys, no configuration.

{
  "mcpServers": {
    "datanexus": {
      "type": "http",
      "url": "https://datanexusmcp.com/mcp"
    }
  }
}

With a registered API key (500 calls/month)

{
  "mcpServers": {
    "datanexus": {
      "type": "http",
      "url": "https://datanexusmcp.com/mcp",
      "headers": {
        "X-DataNexus-Key": "dnx_your_key_here"
      }
    }
  }
}

Via npx (stdio clients — Claude Desktop, Cursor)

npx -y @datanexusmcp/mcp-server

Via npm (programmatic use)

npm install @datanexusmcp/mcp-server

Changelog

v2.4.0 — Sprint 8 (2026-05-30)

10 new tools — API key infrastructure, backend security depth, frontend security wedge

Sprint 8A — API Key Infrastructure:

  • apikeys_generate_api_key — issue a free dnx_... key tied to your email (500 calls/month)

  • apikeys_rotate_api_key — atomic key rotation

  • apikeys_revoke_api_key — immediate revocation + Redis cache invalidation

  • _UsageMiddleware — usage counting injected into every tool response at middleware level. Zero changes to existing tool files

  • Anonymous tier: 100 calls/month (IP-keyed). Registered tier: 500 calls/month (key-keyed)

  • PAYMENT_ENABLED flag: soft gate today → hard 429 when payment is enabled (env var flip, no code change)

Sprint 8B — Sub-category Taxonomy + Backend Security Depth + Frontend Security Wedge:

  • security_audit_sbom_license_policy — SBOM → PASS/WARN/BLOCK per org licence policy (CycloneDX/SPDX). Default policy blocks GPL-3.0/AGPL-3.0. Unlisted licences default to WARN

  • security_fetch_cve_watch_status — CVE watch polling inbox with per-user cursor. Returns only new events since last poll

  • security_fetch_dependency_graph enhanced — cvs_filtered_transitive_deps field added: transitive deps with ≥1 open CVE highlighted via OSV.dev cross-check

  • frontend_security_detect_typosquatting — DL-distance ≤ 2 against curated top-500 frontend corpus

  • frontend_security_audit_manifestpackage.json → SHIP/CAUTION/BLOCK with licence risks and abandonment signals

  • frontend_security_audit_ci_pipeline — GitHub Actions/Vercel/Netlify secret scanner. ${{ secrets.X }} safe refs never flagged

  • frontend_security_fetch_package_risk_brief — npm-scoped risk brief with weekly_downloads and is_ui_component signals

  • CATEGORIES.md — 8-category tool taxonomy added to repo

v2.3.0 — Sprint 7 (2026-05-29)

5 new tools — licence intelligence, CVE aggregator, nonprofit depth

  • security_fetch_licence_analysis, security_audit_licence_compatibility, security_fetch_cve_risk_summary

  • nonprofit_search_nonprofits_by_category, nonprofit_fetch_nonprofit_financial_trends

v2.2.0 — Sprint 6

6 new tools — package risk, maintainer health, stateful CVE/SBOM monitoring

  • security_fetch_package_risk_brief, security_fetch_package_maintainer_history, security_detect_typosquatting

  • security_fetch_cve_watch, security_audit_sbom_continuous, nonprofit_fetch_nonprofit_full_profile

v2.1.0 — Sprint 4

Added CISA KEV, EPSS, and SBOM audit tools (35 tools total).


License

DataNexus MCP is licensed under the Business Source License 1.1.

What this means in plain English:

  • ✅ Free to use for personal projects, research, and self-hosting your own instance

  • ✅ Free to read, modify, and learn from the source code

  • ✅ Converts automatically to Apache 2.0 on 2030-06-11 — no strings attached after that

  • ❌ Cannot be used to offer a competing hosted data intelligence service without a commercial license

Why BSL and not MIT?

We're building a sustainable hosted service on top of this codebase. BSL lets us keep the source open and auditable — important for a tool handling compliance and security data — while protecting the ability to fund continued development.

If you want to run a commercial service using DataNexus internals, get in touch. If you're self-hosting for your own agents, you're fully covered at no charge.


mcp-server MCP server

Available Tools

55 tools
apikeys_generate_api_keyA

Generate a DataNexus API key for the given email address. Anonymous callers get 10 free lookups/week; a registered free key unlocks 100/week. Store the returned key — it is shown only once. Pass it as the X-Api-Key header on future requests. Rate limit: 3 keys per IP per 24 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address to associate with the new API key. Used for delivery and repeat-signup lookup. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations (all false): key shown only once, rate limits, and usage via X-Api-Key header, which are crucial for proper invocation.

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 concise, structured with the main action first followed by details and rate limit, every sentence adds necessary information without redundancy.

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?

The description is complete for an API key generation tool, covering return behavior (shown once), storage instruction, and usage in subsequent requests; output schema likely provides further return details.

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 single parameter 'email' is well-described in both schema and description; description adds value by explaining the key's purpose and subsequent usage, beyond the schema's basic requirement.

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 generates an API key for a given email address, with specific verb 'Generate' and resource 'DataNexus API key', distinguishing it from sibling tools like revoke and rotate.

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 clear guidance on when to use (anonymous vs registered callers, rate limits) and implies context for use, but does not explicitly contrast with alternatives or state when not to use.

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

apikeys_revoke_api_keyA
DestructiveIdempotent

⚠️ DESTRUCTIVE — requires human confirmation before use in automated pipelines. Permanently revoke a DataNexus API key. The key will stop working immediately. This action cannot be undone — generate a new key if access is needed again.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesAPI key (dnx_...) to permanently revoke. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide destructiveHint=true and idempotentHint=true. The description adds valuable context beyond annotations: 'Permanently revoke', 'key will stop working immediately', 'cannot be undone', and the need for human confirmation. No contradictions.

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?

Three sentences, front-loaded with a crucial warning about destructiveness and human confirmation. Every sentence serves a purpose without redundancy. 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?

The tool is simple (1 parameter, output schema exists). The description covers purpose, irreversibility, immediate effect, and safety requirement. It could mention idempotency (that revoking an already revoked key has no effect), but the annotation covers that. Overall fairly 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% and the schema already describes the parameter ('API key (dnx_...) to permanently revoke. Required.'). The description does not add semantic detail beyond what the schema provides, so baseline score 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 explicitly states the action ('revoke'), the resource ('DataNexus API key'), and the immediate consequence ('will stop working immediately'). It clearly distinguishes from sibling tools like apikeys_generate_api_key and apikeys_rotate_api_key by focusing on permanent removal.

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 strong guideline: 'requires human confirmation before use in automated pipelines.' It warns of irreversibility. However, it does not explicitly contrast with alternatives like generate or rotate, missing a clear 'when to use vs not use' statement.

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

apikeys_rotate_api_keyA
Destructive

⚠️ DESTRUCTIVE — requires human confirmation before use in automated pipelines. Revoke the current API key and issue a replacement. Returns the new key once — store it immediately. Pass keys as the X-DataNexus-Key header.

ParametersJSON Schema
NameRequiredDescriptionDefault
current_keyYesExisting active API key (dnx_...) to revoke and replace. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Adds significant behavioral context beyond annotations: requires human confirmation, returns new key only once (must be stored immediately), and specifies header usage. Annotations already indicate destructive=true, but description enriches with operational 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?

Two sentences plus a warning symbol, no redundancy. Critical information (destructive, human confirmation, store key) is front-loaded. Every word serves a purpose.

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?

With an output schema present and only one simple parameter, the description adequately covers purpose, safety, and key operational instructions. No missing information for an agent to use the tool 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%, and the description does not add meaning beyond the schema's parameter description. The note about passing keys in header is general, not param-specific. 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 'Revoke the current API key and issue a replacement', specifying a verb (revoke/replace) and resource (API key). It distinguishes from siblings like apikeys_generate_api_key (create new) and apikeys_revoke_api_key (only revoke).

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?

Explicitly warns about destructive nature and requires human confirmation in automated pipelines. Implies usage when rotating a key, but does not explicitly contrast with using revoke then generate separately.

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

compliance_check_sam_exclusionA
Read-onlyIdempotent

Check whether an entity is on the US federal exclusions list (debarred from government contracts). Read-only. No side effects. Idempotent. US only. name_or_ein: Entity name or 9-digit EIN with or without dash e.g. Acme Corp or 13-1234567. Required. Name match is fuzzy — verify EIN for exact results. Returns excluded: true/false, exclusion type, and exclusion dates if found. Use this before awarding federal contracts or grants. Use govcon_search_contract_awards instead to find what contracts an entity has won. Verified source: SAM.gov. 24-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="compliance_check_sam_exclusion", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
name_or_einYesEntity name or EIN to check SAM exclusions. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds: US only, fuzzy name match, 24-hour cache, verified source SAM.gov, and fallback instruction to report_feedback. No contradiction.

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 thorough but not overly verbose. Each sentence adds value (purpose, usage, param help, alternative, caching, fallback). Could be slightly shorter but well-structured.

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 one required param and output schema exists, description covers return fields (excluded, type, dates), caching, source, and error handling. Complete for context.

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

Parameters5/5

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

Only one parameter name_or_ein. Description adds format (9-digit EIN with dash example), clarifies required, explains fuzzy match behavior, and suggests verifying with EIN. Schema coverage 100% but description adds significant nuance.

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 checks US federal exclusions list (debarred from government contracts). Explicitly distinguishes from sibling tool govcon_search_contract_awards by stating its purpose is to find contracts won, not checks exclusions.

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

Usage Guidelines5/5

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

Explicitly says 'Use this before awarding federal contracts or grants.' Provides alternative: 'Use govcon_search_contract_awards instead to find what contracts an entity has won.'

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

compliance_fetch_finra_brokerA
Read-onlyIdempotent

Fetch FINRA BrokerCheck registration for a US broker or investment adviser by CRD number. Read-only. No side effects. Idempotent. US only. crd_number: Central Registration Depository number as a string of digits e.g. 1234567. Required. CRD number only — name lookup is not supported. Returns registration status, qualifications, disclosure history, and employment history. Use this when you have the CRD number. Use compliance_search_npi_by_name instead for healthcare providers, not financial advisers. Verified source: FINRA BrokerCheck. 24-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="compliance_fetch_finra_broker", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
crd_numberYesFINRA CRD number e.g. 149777. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Descriptively states 'Read-only. No side effects. Idempotent. US only.' Adds caching ('24-hour cache') and source verification ('Verified source: FINRA BrokerCheck'), going beyond annotations. No contradictions.

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?

Every sentence adds value: purpose, properties, usage guidance, alternatives, error handling. Well-organized and front-loaded with essential info.

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 single parameter, rich annotations, and output schema, the description fully covers purpose, usage, return data (registration status, qualifications, etc.), caching, and fallback instructions.

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

Parameters5/5

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

Describes crd_number as 'Central Registration Depository number as a string of digits e.g. 1234567. Required.', adding format clarity and limitation ('name lookup not supported') beyond the schema's description.

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?

Specific verb 'Fetch' and resource 'FINRA BrokerCheck registration' by CRD number clearly states the action. Explicitly distinguishes from sibling tool 'compliance_search_npi_by_name' for healthcare providers, and mentions US-only scope.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'when you have the CRD number'. Provides alternative 'Use compliance_search_npi_by_name instead for healthcare providers'. Also gives post-use error handling instruction for report_feedback.

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

compliance_fetch_npi_providerA
Read-onlyIdempotent

Fetch NPI registration details for a US healthcare provider by NPI number. Read-only. No side effects. Idempotent. US only. npi_number: 10-digit NPI number e.g. 1003000126. Required. Do not include dashes or spaces. Returns provider name, credential type, speciality taxonomy, practice address, and active status. Use this when you have the exact 10-digit NPI. Use compliance_search_npi_by_name instead when you only have the provider name. Verified source: NPPES NPI Registry (CMS). 24-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="compliance_fetch_npi_provider", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
npi_numberYes10-digit NPI number e.g. 1003000126. No dashes. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, etc. Description adds context: no side effects, 24-hour cache, verified source (NPPES), and feedback fallback. Adds value beyond annotations.

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 front-loaded with key purpose and usage, then details. Slightly long but well-structured, every sentence adds value. Inclusion of feedback fallback is extra.

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?

Covers all essential aspects: purpose, usage, parameters, alternative, source, caching, output summary, and error handling via feedback. Complete for a single-param tool with good annotations.

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 covers the parameter description (100% coverage). Description reinforces format (no dashes) and examples, but does not add new semantic meaning 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?

Clearly states the tool fetches NPI registration details by NPI number, specifies it is read-only, idempotent, and US only, and distinguishes from sibling tool compliance_search_npi_by_name.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (have exact NPI) and when to use the alternative (compliance_search_npi_by_name for name search), plus formatting tip on dashes.

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

compliance_search_npi_by_nameA
Read-onlyIdempotent

Search the NPPES NPI Registry by provider name with optional state and speciality filters. Read-only. No side effects. Idempotent. US only. Returns up to 10 matches. name: Full or partial provider name. Required. state: Two-letter US state code e.g. CA. Optional. speciality: Speciality keyword e.g. Cardiology. Optional. Returns NPI number, name, speciality, and address for each match. Use this when you do not have the NPI number. Use compliance_fetch_npi_provider instead when you have the exact 10-digit NPI. Verified source: NPPES NPI Registry (CMS). 24-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="compliance_search_npi_by_name", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFull or partial provider name. Required.
stateNoTwo-letter US state code e.g. CA. Optional.
specialityNoSpeciality keyword e.g. Cardiology. Optional.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, destructiveHint, idempotentHint), the description adds specific traits: 'Read-only. No side effects. Idempotent. US only. Returns up to 10 matches. 24-hour cache.' No contradictions.

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 well-structured and front-loaded with purpose, but includes a lengthy feedback instruction. While informative, it is slightly verbose for a concise description.

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?

The description covers source, constraints, output fields, cache behavior, and error handling via feedback, making it fully complete given the tool's complexity and rich annotations/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 coverage is 100% with parameter descriptions. The description repeats these with minor additions (e.g., 'e.g. CA'), but adds no significant new semantic value beyond what the schema already 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 explicitly states it searches the NPPES NPI Registry by provider name with optional filters, and distinguishes itself from the sibling tool compliance_fetch_npi_provider by specifying when to use each.

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

Usage Guidelines5/5

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

Provides clear when-to-use ('when you do not have the NPI number') and when-not-to-use (use compliance_fetch_npi_provider for exact NPI), plus constraints like US-only and up to 10 matches, and a feedback fallback.

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

domain_check_email_securityA
Read-onlyIdempotent

Check SPF, DMARC, and DKIM email authentication for a domain.

domain: Domain without protocol e.g. "google.com".

Returns: overall_grade (A–F), spf_score, dmarc_score, dkim_score (each 0–10), spf_record, dmarc_record, dkim_selectors_found. Scores reflect live DNS via Cloudflare DoH — no cache.

SPF: -all=10 (strict), ~all=7, ?all=4, none=2, +all=0 (open relay). DMARC: p=reject=10, p=quarantine=7, p=none=4, absent=0; +1 for rua set. DKIM: selector found=10, none=0. Checks 10 common selectors in parallel.

Example: check_email_security(domain="google.com")

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain without protocol e.g. google.com. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Description adds significant behavioral context beyond annotations: live DNS via Cloudflare DoH, no cache, and detailed scoring logic for SPF/DMARC/DKIM. No contradiction with 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?

Concise, well-structured with clear sections, scoring details, and an example. No wasted 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?

Fully covers purpose, parameter, scoring methodology, and return structure. Output schema exists, so return values need not be repeated.

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 already describes the domain parameter (100% coverage), but description reinforces format (no protocol) and provides 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?

Description clearly states it checks SPF, DMARC, and DKIM email authentication for a domain, differentiating it from other DNS-related tools like domain_fetch_dns_records.

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?

Description implicitly indicates usage for checking email authentication, but lacks explicit guidance on when not to use or alternatives among siblings.

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

domain_fetch_dns_recordsA
Read-onlyIdempotent

Fetch current DNS records for a domain via Cloudflare DNS over HTTPS. Read-only. No side effects. Idempotent. domain: Domain name without protocol e.g. cloudflare.com. Required. record_types: List of DNS record types to fetch. Required. Valid values: A, AAAA, MX, TXT, NS, CNAME, SOA. Example: ["A", "MX", "TXT"]. Returns all matching records currently in effect. Use this when you need live DNS resolution. Use domain_fetch_domain_rdap instead when you need registration metadata not DNS records. Verified source: Cloudflare DoH. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="domain_fetch_dns_records", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain without protocol e.g. anthropic.com. Required.
record_typesYesDNS record types e.g. ['A','MX','TXT']. Optional.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds value beyond annotations by disclosing the data source ('Verified source: Cloudflare DoH'), caching behavior ('4-hour cache'), and the read-only, side-effect-free, idempotent nature. No contradictions with 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 concise but comprehensive. It front-loads the core purpose and important characteristics (read-only, idempotent), then provides parameter details, usage comparison, source, caching, and fallback. Every sentence adds value without repetition.

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 complexity (fetching DNS records), annotations (readOnly, idempotent), and existing output schema, the description covers all necessary aspects: purpose, parameters, usage context, data source, caching, and fallback. It leaves no gaps for an AI agent to misuse.

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?

Input schema covers 100% of parameters with descriptions. The description adds further clarity by providing examples ('e.g. cloudflare.com'), listing valid record types, and giving an example array. While the schema already describes the parameters, the description enriches them with practical usage details.

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 current DNS records for a domain via Cloudflare DNS over HTTPS. It uses specific verbs ('Fetch', 'resolve') and explicitly names the resource ('DNS records for a domain'). It also differentiates from the sibling tool domain_fetch_domain_rdap by contrasting DNS records vs registration metadata.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('when you need live DNS resolution') and when not to ('Use domain_fetch_domain_rdap instead when you need registration metadata'). It also includes a fallback instruction to call report_feedback if the tool does not serve the user's need, demonstrating thorough usage guidance.

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

domain_fetch_domain_historyA
Read-onlyIdempotent

Fetch historical SSL certificate issuance for a domain from Certificate Transparency logs. Read-only. No side effects. Idempotent. domain: Domain name without protocol e.g. example.com. Required. Returns all past certificates with issuer, validity dates, and SANs in reverse chronological order. Use this to detect domain hijacking or audit unexpected historical certificate issuance. Use domain_fetch_ssl_certificate_chain instead when you only need the current certificate chain. Verified source: crt.sh Certificate Transparency. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="domain_fetch_domain_history", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain without protocol e.g. example.com. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Description goes beyond annotations by specifying read-only, idempotent, no side effects, source (crt.sh), cache duration (4 hours), and return format. All annotations are reinforced and supplemented.

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 informative but somewhat verbose. It front-loads the purpose and behavior, and each sentence adds value. Could be slightly tighter, but still well-structured.

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?

For a simple one-parameter tool, the description covers purpose, usage guidance, behavioral details, parameter semantics, source, cache, and fallback. The presence of an output schema complements the described return format.

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 description for the single parameter. The description repeats the parameter info with an example, adding slight value but not significantly 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?

Clearly states the action (fetch historical SSL cert issuance), resource (domain from CT logs), and distinguishes from sibling domain_fetch_ssl_certificate_chain. The verb 'fetch' and resource 'domain history' 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 Guidelines5/5

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

Explicitly states when to use (detect hijacking, audit), when not to (use sibling for current cert), and provides fallback instruction via report_feedback. Contexts are clear and helpful.

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

domain_fetch_domain_rdapA
Read-onlyIdempotent

Fetch domain registration details via IANA RDAP (the modern structured replacement for WHOIS). Read-only. No side effects. Idempotent. domain: Domain name without protocol e.g. example.com not https://example.com. Required. Returns registrar, registration date, expiry date, nameservers, and registrant info where publicly available. Use this when you need registration metadata. Use domain_fetch_ssl_certificate_chain instead when you need certificate history. Use domain_fetch_dns_records instead when you need live DNS resolution. Verified source: IANA RDAP. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="domain_fetch_domain_rdap", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain without protocol e.g. example.com. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds context: 'Read-only. No side effects. Idempotent.' Also describes return fields and 4-hour cache. No contradictions.

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?

Efficiently front-loaded with main action and key details. Every sentence adds value: usage guideline, parameter hint, alternative tools, source, cache, feedback mechanism. No fluff.

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 simple tool with 1 param, full schema coverage, good annotations, and existing output schema, the description is fully complete: it explains purpose, usage, return content, caching, and provides fallback feedback mechanism.

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 clear description. Description adds a concrete example ('example.com not https://example.com') and clarifies required format, providing additional value 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 'Fetch domain registration details via IANA RDAP' with specific verb and resource. Distinguishes from sibling tools like domain_fetch_ssl_certificate_chain and domain_fetch_dns_records by specifying different use cases.

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

Usage Guidelines5/5

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

Explicitly says when to use ('when you need registration metadata') and when not to use with named alternatives. Also includes caching info and a feedback instruction for gaps.

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

domain_fetch_reverse_ipA
Read-onlyIdempotent

Find domains co-hosted on the same IP address (reverse IP lookup). Read-only. No side effects. Idempotent. domain_or_ip: Domain name (e.g. shared.dreamhost.com) or IPv4 address (e.g. 1.2.3.4). Required. If a domain is given, it is first resolved to its IPv4 A record. IPv6-only domains are not supported. Returns list of co-hosted domains on the same IP. Useful for identifying shared hosting risk and mapping corporate infrastructure. Daily quota guard: 100 calls/day free tier. Verified source: HackerTarget API. 24-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="domain_fetch_reverse_ip", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
domain_or_ipYesDomain e.g. shared.dreamhost.com or IPv4 e.g. 1.2.3.4. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The tool already has annotations (readOnlyHint, idempotentHint) and the description adds details beyond annotations: IPv6 limitation, daily quota, caching, and API source. No contradictions found.

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 well-structured and each sentence adds value. Slightly verbose but effective. Could be tightened slightly without losing clarity.

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 parameter, no nested objects) and presence of output schema, the description covers all necessary context including limitations, caching, and error handling.

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

Parameters5/5

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

The single parameter is fully documented in schema (100% coverage). The description adds context about domain resolution to IPv4, 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?

The description clearly states the tool performs reverse IP lookup to find co-hosted domains. It explicitly mentions the input type and use cases, distinguishing it from sibling tools like domain_fetch_dns_records.

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 explains when to use the tool and what input to provide. It mentions daily quota and fallback feedback mechanism. However, it does not explicitly list 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.

domain_fetch_ssl_certificate_chainA
Read-onlyIdempotent

Fetch SSL certificate history for a domain from Certificate Transparency logs. Read-only. No side effects. Idempotent. domain: Domain name without protocol e.g. github.com. Required. Does not support IP addresses or wildcard domains. Returns issuer, subject, validity period, and Subject Alternative Names for each logged cert. Use this to detect unexpected certificate issuance or audit certificate history. Use domain_fetch_domain_rdap instead when you need registration data not certificate data. Verified source: crt.sh Certificate Transparency. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="domain_fetch_ssl_certificate_chain", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain without protocol e.g. github.com. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description adds behavioral context beyond annotations: it declares 'Read-only. No side effects. Idempotent.' (matching annotations), mentions a 4-hour cache, and specifies the data source (crt.sh Certificate Transparency). It also describes the return fields (issuer, subject, validity period, SANs). No contradiction with annotations.

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 well-structured with front-loaded purpose, parameter details, usage guidance, and fallback. Every sentence adds value, but it is slightly verbose due to the feedback instruction. Still efficient for the information conveyed.

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 simplicity (one parameter, output schema present), the description covers all necessary aspects: purpose, parameters, return fields, usage context, alternative, data source, caching, and a feedback mechanism for gaps. No missing information.

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%, providing a baseline of 3. The description adds meaningful clarification: 'Domain name without protocol e.g. github.com. Required. Does not support IP addresses or wildcard domains.' This adds constraints not fully captured by the schema description, earning a 4.

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 SSL certificate history') and the resource ('from Certificate Transparency logs'). It distinguishes itself from sibling tools by explicitly naming domain_fetch_domain_rdap as an alternative for registration data. It also specifies limitations (no IPs/wildcards), which further clarifies its scope.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use ('detect unexpected certificate issuance or audit certificate history') and when to use an alternative ('Use domain_fetch_domain_rdap instead when you need registration data'). Also includes fallback instructions for if the tool does not suffice, guiding the agent to report feedback.

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

domain_fetch_subdomainsA
Read-onlyIdempotent

Enumerate subdomains for a domain via Certificate Transparency logs. Read-only. No side effects. Idempotent. domain: Domain name without protocol e.g. anthropic.com. Required. Returns deduplicated list of known subdomains. Primary source: crt.sh Certificate Transparency (free). Fallback source: RapidDNS (free, passive CT + DNS) — used automatically when crt.sh is unavailable. Response includes source field indicating which source was used. Results are cached 24h — second call returns in under 500ms. First call may be slower (8s max per source). Circuit breaker trips after 3 timeouts or 5xx errors within 600s. Verified sources: crt.sh Certificate Transparency, RapidDNS. 24-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="domain_fetch_subdomains", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain without protocol e.g. anthropic.com. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds valuable context: no side effects, caching with 24-hour TTL, circuit breaker mechanism, fallback sources, and response includes source field. No contradiction with annotations.

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 detailed but well-structured, front-loading the core purpose. It covers sources, caching, error handling, and fallback. Could be slightly shorter by consolidating some details, but overall concise given the amount of useful information.

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?

The description covers all critical aspects: data sources, caching, error handling, idempotency, and even a fallback action (report_feedback). With an output schema present, return value details are not needed. The description is thorough for this 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 100% coverage for the single parameter 'domain'. The description repeats the schema's description but adds no new semantic detail (e.g., format, validation). 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 enumerates subdomains via Certificate Transparency logs. It specifies the primary source (crt.sh) and fallback (RapidDNS), and the verb 'enumerate' is precise. This differentiates it from sibling tools like domain_fetch_dns_records.

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 explains when to use the tool (subdomain enumeration) and provides context on caching and fallback behavior. It also explicitly instructs to call report_feedback if the result doesn't serve the user's need. However, it lacks explicit '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.

frontend_security_audit_ci_pipelineA
Read-onlyIdempotent

Scan GitHub Actions, Vercel, or Netlify CI configs for exposed secrets, missing lockfile enforcement, and unpinned dependencies. Paste your config content — no filesystem access required. config: Raw YAML/TOML content of your CI config. Required. 500 KB max. config_type: github_actions (full check suite), vercel, or netlify (secrets only in Sprint 8). Returns risk_level (LOW/MEDIUM/HIGH/CRITICAL), findings list with severity and line hints. NOTE: ${{ secrets.FOO }} and ${{ env.FOO }} references are NOT flagged — only literal secret values. Read-only. No side effects. Idempotent. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="frontend_security_audit_ci_pipeline", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
configYesRaw YAML/TOML content of your CI config. Required. 500 KB max.
config_typeNoCI config type: github_actions, vercel, or netlify. Default github_actions.github_actions

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, etc. Description adds behavior beyond annotations, notably that ${{ secrets.FOO }} and ${{ env.FOO }} references are NOT flagged, only literal secrets. Also specifies size limit (500 KB) and output structure (risk_level, findings).

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 front-loaded with the action, then parameters, output, behavioral note, safety assurance, and feedback fallback. Every sentence adds value, though the feedback section is more meta-tooling. Still well-structured and not overly verbose.

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 complexity (multiple config types, output schema exists), the description is complete: it covers what is scanned, checked, and not checked, parameter details, size limit, read-only nature, and a feedback mechanism. No gaps remain for agent selection or 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?

Schema coverage is 100% with both parameters fully described in the schema. The description repeats these details (e.g., 'Required. 500 KB max.') but does not add new semantic meaning beyond what the schema provides. 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 tool scans CI configs (GitHub Actions, Vercel, Netlify) for exposed secrets, missing lockfile enforcement, and unpinned dependencies. It distinguishes from sibling tools like frontend_security_audit_manifest by specifying the resource (CI configs) and checks performed.

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 context on when to use (user has CI config content), notes limited functionality for Vercel/Netlify (secrets only in Sprint 8), and clarifies that ${{ secrets/ env }} references are not flagged. It lacks explicit alternatives or when-not-to-use but offers a feedback fallback if results don't serve the need.

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

frontend_security_audit_manifestA
Read-onlyIdempotent

Audit a frontend package.json for security risks — returns a single SHIP/CAUTION/BLOCK verdict with licence risks and abandonment signals. Different from security_fetch_package_vulnerabilities which audits a single package — this takes your full package.json. manifest: Contents of package.json as a string. Required. 500 KB max. lockfile: Contents of package-lock.json or yarn.lock (optional). If provided, audits pinned versions; otherwise audits semver ranges. BLOCK: any critical CVE in direct deps OR GPL-3.0 in commercial context. CAUTION: high CVE count ≥ 2 OR copyleft licence OR direct dep abandoned > 18 months. Sources: OSV.dev (CVEs), deps.dev (licences), npm registry (abandonment). Read-only. No side effects. Idempotent. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="frontend_security_audit_manifest", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
lockfileNoContents of package-lock.json or yarn.lock. Optional.
manifestYesContents of package.json as a string. Required. 500 KB max.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes beyond annotations by detailing the verdict criteria (BLOCK, CAUTION), data sources (OSV.dev, deps.dev, npm registry), and constraints (500 KB max). It clearly states the tool is read-only, has no side effects, and is idempotent, consistent with the annotations. No contradictions.

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 detailed but efficiently structured: purpose first, then parameter details, then conditions, sources, and finally the feedback fallback. It is slightly long but every sentence adds value; no filler.

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 moderate complexity (2 parameters, no enums, rich annotations), the description covers all essential aspects: purpose, usage, behavioral details, parameter semantics, and even a feedback mechanism. An output schema exists but is not needed to explain return values as the description already summarizes the verdict.

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

Parameters5/5

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

Both parameters are described in the schema (100% coverage), but the description adds crucial context: 'manifest' is required with a 500 KB size limit, and 'lockfile' when provided audits pinned versions versus semver ranges. This enriches the agent's understanding 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?

The description clearly states it audits a frontend package.json for security risks and returns a SHIP/CAUTION/BLOCK verdict. It distinguishes from the sibling 'security_fetch_package_vulnerabilities' which audits a single package, making the tool's purpose and differentiation explicit.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: it works on a full package.json, not a single package. It specifies that the 'lockfile' parameter is optional and explains the behavioral difference when provided vs absent. It also directs to call 'report_feedback' if the response is inadequate, offering a clear fallback.

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

frontend_security_detect_typosquattingA
Read-onlyIdempotent

Typosquatting detection optimised for the top 500 frontend packages (React, Vite, Axios, Lodash, etc.). Fewer false positives than a full npm scan. For backend packages, use security_detect_typosquatting instead. package_name: Package name to check. Required. ecosystem: npm or pypi — default npm. Uses Damerau-Levenshtein distance ≤ 2 against a curated frontend-package corpus. Returns is_likely_typosquat, closest_match, distance, and risk_level (LOW/MEDIUM/HIGH). Read-only. No side effects. Idempotent. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="frontend_security_detect_typosquatting", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemNoPackage ecosystem: npm or pypi. Default npm.npm
package_nameYesPackage name e.g. requests. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, destructiveHint, idempotentHint), the description adds algorithm details (Damerau-Levenshtein distance ≤2, curated corpus) and output fields, ensuring 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.

Conciseness4/5

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

The description is well-structured with front-loaded purpose and sibling differentiation. Every sentence adds value, but it is slightly verbose for a simple tool.

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 complexity, the description covers algorithm, scope, output schema, and fallback behavior. The existence of output schema does not detract from the comprehensive description.

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 parameter descriptions. The description restates parameters with defaults and requirements but adds little new semantic value 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?

The description clearly identifies the tool as typosquatting detection for the top 500 frontend packages, and explicitly distinguishes it from the sibling 'security_detect_typosquatting' for backend packages.

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

Usage Guidelines5/5

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

It provides explicit guidance on when to use this tool (frontend packages) and when to use the sibling (backend packages), mentions fewer false positives, and includes a fallback instruction for unsatisfactory results.

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

frontend_security_fetch_package_risk_briefA
Read-onlyIdempotent

SHIP/CAUTION/BLOCK risk brief for an npm package with frontend-specific context. Wraps security_fetch_package_risk_brief restricted to npm, and adds weekly_downloads and is_ui_component signals. package_name: npm package name. Required. version: Optional pinned version — latest resolved if omitted. Returns verdict, CVE counts, licence risk, maintainer health, weekly_downloads, is_ui_component. Use security_fetch_package_risk_brief for non-npm ecosystems. Read-only. No side effects. Idempotent. Sources: OSV.dev, deps.dev, npm registry. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="frontend_security_fetch_package_risk_brief", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoPackage version e.g. 2.28.0. Optional.
package_nameYesPackage name e.g. requests. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Description goes beyond annotations by clarifying the tool is read-only, idempotent, has no side effects, and lists data sources (OSV.dev, deps.dev, npm registry). Annotations already mark readOnlyHint, destructiveHint, idempotentHint, openWorldHint, and the description confirms and adds 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?

Description is concise and well-structured. Each sentence adds value: purpose, scope, parameters, behavior, sources, and fallback. No redundancy or filler.

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 complexity (2 parameters, output schema present, rich annotations), the description fully covers purpose, usage, parameters, behavior, return content, and error handling via feedback. No missing elements.

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%, baseline 3. Description adds extra meaning: notes that version is optional and resolves to latest if omitted, and calls package_name required. This clarifies behavior beyond the schema's parameter 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 provides a risk brief for npm packages with frontend-specific context, including specific signals (weekly_downloads, is_ui_component). It distinguishes from the generic security_fetch_package_risk_brief by specifying ecosystem scope.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (for npm packages with frontend context) and when to use the sibling (security_fetch_package_risk_brief for non-npm ecosystems). Also provides a fallback feedback mechanism via report_feedback.

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

govcon_fetch_open_solicitationsA
Read-onlyIdempotent

Fetch currently open government contract solicitations matching a keyword. Read-only. No side effects. Idempotent. keyword: Description of goods or services sought e.g. cloud computing services. Required. Encode special characters — + becomes %2B. agency: Awarding agency name. Optional, defaults to all agencies. jurisdiction: One of US, EU, or UK. Optional. Default US. Returns solicitation title, agency, response deadline, estimated value, and NAICS code. Use this when looking for active bid opportunities. Use govcon_search_contract_awards instead when you need historical awards not open solicitations. Verified source: SAM.gov + USASpending.gov. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="govcon_fetch_open_solicitations", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
agencyNoAwarding agency name. Optional, defaults to all agencies.
keywordYesDescription of goods or services sought e.g. cloud computing. Required.
jurisdictionNoJurisdiction: US, EU, or UK. Default US. Optional.US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnly, idempotent), it adds caching behavior (4-hour cache), data source transparency (SAM.gov + USASpending.gov), and encoding requirements for the keyword parameter. No contradictions with annotations.

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?

Well-structured with front-loaded purpose, parameter list, return fields, usage guidance, and fallback. Every sentence is informative without unnecessary verbosity.

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 complexity (1 required param, 3 optional, output schema exists), the description covers all aspects: purpose, parameters, usage, caching, sources, and even a gap reporting mechanism. Nothing essential is missing.

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%, but the description adds encoding guidance for the keyword parameter and clarifies defaults. It also explains the return fields, providing useful context beyond schema 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 fetches currently open government contract solicitations by keyword. It distinguishes itself from the sibling tool govcon_search_contract_awards by specifying historical awards vs. open solicitations.

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

Usage Guidelines5/5

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

Provides explicit when-to-use ('when looking for active bid opportunities') and when-not-to-use ('use govcon_search_contract_awards instead when you need historical awards'), plus a fallback feedback mechanism.

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

govcon_fetch_vendor_contract_historyA
Read-onlyIdempotent

Fetch the complete federal contract award history for a specific vendor. Read-only. No side effects. Idempotent. vendor_name: Company or organisation name e.g. Booz Allen Hamilton. Required. Fuzzy match used. jurisdiction: One of US, EU, or UK. Optional. Default US. Returns total award value, top awarding agencies, contract types, and recent awards with amounts and dates. Use this when researching a specific company's government contracting history. Use govcon_search_contract_awards instead when exploring a topic area without a specific vendor. Verified source: USASpending.gov. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="govcon_fetch_vendor_contract_history", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_nameYesVendor or company name to search e.g. Booz Allen Hamilton. Required.
jurisdictionNoJurisdiction: US, EU, or UK. Default US. Optional.US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint false, idempotentHint true. Description adds further context: fuzzy matching, data source (USASpending.gov), 4-hour cache, and return fields. No contradictions.

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?

Well-structured with front-loaded purpose, parameter details, usage guidance, and caching info. Slightly lengthy but every sentence adds value; could be slightly more concise.

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 output schema exists, description explains return fields and caching. Covers prerequisites, optional parameter, source verification, and error handling. Complete for a tool with 2 parameters.

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

Parameters5/5

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

Both parameters are described in schema (100% coverage). Description adds value: specifies vendor_name is required and uses fuzzy match, lists jurisdiction options with default US. Goes 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?

Clearly states it fetches the complete federal contract award history for a specific vendor. Distinguishes from sibling tool govcon_search_contract_awards by specifying when to use each.

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

Usage Guidelines5/5

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

Explicitly describes when to use this tool (researching a specific company) and when to use the alternative (exploring without a specific vendor). Also provides fallback instructions via report_feedback.

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

govcon_search_contract_awardsA
Read-onlyIdempotent

Search government contract awards by keyword, agency, and date range.

keyword: Contract scope e.g. "cybersecurity software". agency: Awarding agency e.g. "Department of Defense". Optional. date_from: Earliest award date ISO 8601 e.g. "2024-01-31". Optional. jurisdiction: "US", "EU", or "UK". Default "US".

Returns: award amounts, recipient vendors, NAICS codes, award dates. Use govcon_fetch_vendor_contract_history for all contracts by a specific vendor. Use govcon_fetch_open_solicitations for active bids, not past awards. Source: USASpending.gov + SAM.gov. 4-hour cache.

Example: search_contract_awards(keyword="cybersecurity software", agency="Department of Defense")

ParametersJSON Schema
NameRequiredDescriptionDefault
agencyNoAwarding agency name e.g. Department of Defense. Optional.
keywordYesSearch terms describing the contract scope e.g. cybersecurity software. Required.
date_fromNoEarliest award date ISO 8601 e.g. 2024-01-31. Optional.
jurisdictionNoJurisdiction: US, EU, or UK. Default US. Optional.US

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Discloses return fields (award amounts, recipient vendors, NAICS codes, award dates) and cache duration (4-hour cache), adding value beyond annotations which already indicate read-only, idempotent, and open-world hints.

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?

Concise yet comprehensive paragraph, front-loading the core purpose, with no redundant sentences; each sentence adds specific value.

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?

Covers all necessary aspects: purpose, parameters, alternatives, data source, caching, and expected return fields, making it fully self-contained for an agent.

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 descriptions, but the description adds real-world examples and clarifies parameter usage (e.g., 'keyword: Contract scope e.g. 'cybersecurity software''), enhancing semantics 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?

The description clearly states the verb 'search' and resource 'government contract awards', and distinguishes from siblings by explicitly naming alternative tools for different use cases.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use this tool vs alternatives ('Use govcon_fetch_vendor_contract_history...', 'Use govcon_fetch_open_solicitations...') and mentions data source and cache behavior.

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

nonprofit_fetch_charity_ukA
Read-onlyIdempotent

Fetch UK registered charity details by charity number or organisation name. Read-only. No side effects. Idempotent. UK only. charity_number_or_name: UK registered charity number (7 digits, e.g. 1234567) or full/partial organisation name. Required. Returns registration status, income, expenditure, activities, and trustee count. Use this for UK charities. Use nonprofit_fetch_nonprofit_by_ein or nonprofit_search_nonprofits_by_name for US nonprofits. Verified source: UK Charity Commission OGL v3. 24-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="nonprofit_fetch_charity_uk", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
charity_number_or_nameYesUK charity number e.g. 1089464 or name substring. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description reinforces these with 'Read-only. No side effects. Idempotent.' and adds valuable context: 'UK only,' 'Verified source: UK Charity Commission OGL v3,' and '24-hour cache.' No contradictions.

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 well-structured, starting with the core purpose, then listing key attributes, usage guidelines, and return values. Every sentence provides essential information without redundancy. It is concise yet comprehensive.

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 output schema exists, the description appropriately summarizes key return fields (registration status, income, etc.). It also covers caching, source verification, and provides a feedback mechanism, making it fully self-contained for an agent to use correctly.

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 documents the parameter, but the description adds format details ('7 digits, e.g. 1234567 or full/partial organisation name') and clarifies that it's required. This enhances understanding beyond the schema's description.

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 ('Fetch'), the resource ('UK registered charity details'), and the input criteria (charity number or name). It explicitly distinguishes this tool from sibling tools for US nonprofits, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool (UK charities only) and when to use alternatives ('nonprofit_fetch_nonprofit_by_ein' or 'nonprofit_search_nonprofits_by_name' for US nonprofits). It also includes instructions for reporting gaps, ensuring proper usage.

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

nonprofit_fetch_nonprofit_by_einA
Read-onlyIdempotent

Fetch IRS 990 filing data for any US nonprofit by EIN. Read-only. No side effects. Idempotent. US only. ein: 9-digit Employer ID with or without dash, e.g. 46-5734087 or 465734087. Required. Returns name, revenue, expenses, assets, NTEE code, and mission from the most recent 990 filing. Use this when you have the exact EIN. Use nonprofit_search_nonprofits_by_name instead when you only have a name. Verified source: IRS EO BMF + IRS TEOS. 7-day cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="nonprofit_fetch_nonprofit_by_ein", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
einYesEIN in format XX-XXXXXXX e.g. 46-5734087. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Description explicitly states 'Read-only. No side effects. Idempotent.' Matches annotations (readOnlyHint, destructiveHint, idempotentHint). Also mentions caching behavior (7-day cache). No contradictions.

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?

Very concise yet comprehensive. Front-loaded with key purpose and behavioral traits. Every sentence adds value, including the feedback mechanism call-to-action.

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 has a single parameter, comprehensive annotations, and presumably an output schema (not shown but mentioned), the description is complete. It even includes a fallback feedback instruction.

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 parameter ein. Description adds format examples and emphasizes it's required, which improves usability beyond the schema description.

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 explicitly states the tool fetches IRS 990 filing data for a US nonprofit by EIN. It specifies the return data (name, revenue, expenses, etc.) and distinguishes from the sibling tool nonprofit_search_nonprofits_by_name.

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

Usage Guidelines5/5

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

Provides clear guidance: use this when you have the exact EIN, use nonprofit_search_nonprofits_by_name when you only have a name. Also includes EIN format examples.

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

nonprofit_fetch_nonprofit_full_profileA
Read-onlyIdempotent

Complete nonprofit due diligence in one call. Revenue trends, executive pay, risk flags, and a health score from IRS 990 data. Uses ProPublica Nonprofit Explorer API with IRS e-File fallback. Data refreshed on each call. Returns financials, executive_compensation, risk_flags, health_score (0–100), programme_ratio, fundraising_sustainability, and upstream_status. Rate limit: 30/minute. No auth required. For grant-makers, investors, and compliance teams performing nonprofit due diligence. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="nonprofit_fetch_nonprofit_full_profile", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
einYesEIN in format XX-XXXXXXX e.g. 46-5734087. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds significant behavioral details: data refreshed on each call, rate limit 30/minute, no auth required, API sources and fallback, and explicit output components. This goes beyond what annotations provide.

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 fairly long but well-structured, front-loading the main purpose and outputs. Every sentence adds value, though it could be slightly more concise.

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 complexity and the existence of an output schema, the description covers usage, behavior, output components, target audience, and error handling via report_feedback. It is comprehensive for due diligence 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% and the schema already describes the ein parameter with format example. The description does not add extra 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 clearly states the tool performs 'complete nonprofit due diligence' and lists specific outputs like revenue trends, executive pay, risk flags, and health score. It distinguishes from sibling tools like nonprofit_fetch_nonprofit_by_ein and nonprofit_fetch_nonprofit_financial_trends by emphasizing comprehensiveness.

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 specifies target users (grant-makers, investors, compliance teams) and mentions reporting gaps via report_feedback. However, it does not explicitly tell when not to use this tool versus alternatives like the basic EIN lookup or financial trends tool.

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

nonprofit_search_nonprofits_by_categoryA
Read-onlyIdempotent

Search US nonprofits by mission category and state. Returns up to 25 results with revenue, assets, and health scores (0–100). Category maps to NTEE codes: education, healthcare, arts, environment, human_services, civil_rights, international, religion, science, sports. Raw NTEE letter (A–Z) also accepted. Uses ProPublica Nonprofit Explorer API. Rate limit: 30/minute. No auth required. Starting point for nonprofit due diligence — follow with nonprofit_fetch_nonprofit_full_profile for deep dive on a specific EIN. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="nonprofit_search_nonprofits_by_category", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoTwo-letter US state code e.g. CA. Optional.
categoryYesNTEE category e.g. education, healthcare, arts. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Discloses rate limit ('30/minute'), no authentication required, and NTEE code mapping beyond annotations. Annotations already indicate read-only, idempotent, non-destructive, open-world; description adds non-contradictory 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.

Conciseness4/5

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

Description is somewhat long but every sentence provides value. Information is front-loaded with primary purpose and output. Slightly verbose but not excessive.

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?

Output schema exists so description need not explain return format. Description covers return size (up to 25 results), specific fields (revenue, assets, health scores), rate limits, auth, and next steps. Complete for a search tool.

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

Parameters5/5

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

Adds meaning beyond schema: category maps to specific NTEE categories and accepts raw NTEE letters. State parameter is explained as US state code. Schema coverage is 100% but description enhances 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?

Clearly states 'Search US nonprofits by mission category and state' with specific verbs and resources. Distinguishes from sibling tools like nonprofit_search_nonprofits_by_name and nonprofit_fetch_nonprofit_full_profile by mentioning follow-up usage.

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

Usage Guidelines5/5

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

Explicitly provides usage context: 'Starting point for nonprofit due diligence — follow with nonprofit_fetch_nonprofit_full_profile for deep dive.' Also includes fallback instructions to call report_feedback if the tool doesn't meet the need.

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

nonprofit_search_nonprofits_by_nameA
Read-onlyIdempotent

Search US nonprofits by name with optional state filter. Read-only. No side effects. Idempotent. US only. Returns up to 25 matches. name: Full or partial organisation name. Required. state: Two-letter US state code e.g. CA, NY. Optional, defaults to all states. Returns EIN, name, state, revenue, and NTEE code for each match. Use this when you have a name but not the EIN. Use nonprofit_fetch_nonprofit_by_ein instead when you have the exact EIN for a precise single lookup. Verified source: IRS EO BMF. 7-day cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="nonprofit_search_nonprofits_by_name", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesOrganization name to search e.g. Red Cross. Required.
stateNoTwo-letter US state code e.g. CA. Optional.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Discloses read-only, no side effects, idempotent behavior, US-only scope, up to 25 results, 7-day cache, and verified IRS source. Adds value beyond annotations by providing concrete limits and source 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?

Description is concise yet comprehensive, front-loaded with purpose, then behavioral notes, parameter details, usage guidance, and fallback. Each sentence adds value with no redundancy.

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?

Covers purpose, behavior, parameters, usage, source, caching, and feedback. Given presence of output schema and annotations, the description is fully complete for an agent to correctly select and invoke this tool.

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%, so baseline is 3. Description adds context like 'Full or partial' for name and 'defaults to all states' for state, enhancing understanding beyond raw 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 clearly states the tool searches US nonprofits by name with an optional state filter, using specific verbs and resource. It distinguishes from sibling tool nonprofit_fetch_nonprofit_by_ein, providing clear differentiation.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (when you have a name but not EIN) and when to use the sibling tool (having exact EIN). Also provides a feedback fallback mechanism for unsatisfactory results.

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

regulatory_fetch_docket_detailsA
Read-onlyIdempotent

Fetch full details for a specific regulatory docket by ID. Read-only. No side effects. Idempotent. US federal only. docket_id: Docket identifier in agency format e.g. EPA-HQ-OAR-2021-0317 or FTC-2024-0041. Required. Timeout is 30 seconds — large dockets may be slow. Returns docket title, agency, status, comment period dates, total comment count, and list of related documents. Use this when you have a docket ID from a search. Use regulatory_search_open_rulemakings instead when you need to find dockets by topic first. Verified source: Regulations.gov + Federal Register fallback. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="regulatory_fetch_docket_details", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
docket_idYesDocket ID e.g. EPA-HQ-OAR-2021-0668. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Description adds 'Read-only. No side effects. Idempotent.' and mentions timeout (30 seconds), cache (4-hour), and fallback to Federal Register, going beyond the annotations which already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint.

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?

Well-structured and concise; starts with main action, then key properties, usage guidance, and additional details. Every sentence adds value. No redundancy.

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 output schema exists and annotations cover safety, the description is thorough: lists return fields, mentions cache, timeout, fallback, and includes feedback mechanism for gaps.

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?

Only one parameter docket_id with schema description. Tool description adds examples and format clarification ('e.g. EPA-HQ-OAR-2021-0317 or FTC-2024-0041'). Schema coverage is 100%, baseline 3, with enhancement.

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 'Fetch full details for a specific regulatory docket by ID' with a specific verb and resource. It differentiates from sibling tool regulatory_search_open_rulemakings by noting when to use each.

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

Usage Guidelines5/5

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

Explicitly says 'Use this when you have a docket ID from a search' and 'Use regulatory_search_open_rulemakings instead when you need to find dockets by topic first.' Provides clear context and alternatives.

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

regulatory_fetch_federal_register_noticesA
Read-onlyIdempotent

Fetch recent Federal Register notices and rules for a specific agency. Read-only. No side effects. Idempotent. US federal only. agency: Agency name or abbreviation e.g. SEC, Food and Drug Administration, EPA. Required. keyword: Optional topic filter e.g. cryptocurrency. Optional, defaults to all notices. date_from: Earliest publication date in ISO 8601 format e.g. 2024-01-31. Optional, defaults to last 90 days. Returns document type, title, publication date, effective date, and CFR citations. Use this to monitor recent regulatory activity for an agency. Use regulatory_search_open_rulemakings instead when filtering by topic across all agencies. Verified source: Federal Register API. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="regulatory_fetch_federal_register_notices", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
agencyYesAgency name or abbreviation e.g. SEC, EPA. Required.
keywordNoOptional topic filter e.g. cryptocurrency. Optional.
date_fromNoEarliest publication date ISO 8601 e.g. 2024-01-31. Optional.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint; the description reinforces these and adds further context: 'US federal only', 'Verified source: Federal Register API', and '4-hour cache'. This adds value beyond annotations without any contradiction.

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 paragraph but is densely packed with useful information. It is front-loaded with the core purpose and usage, and every sentence adds value. While it could benefit from structural elements like bullet points, it remains concise and 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 presence of an output schema (which likely covers return values), the description adequately explains the tool's purpose, parameters, output structure (document type, title, etc.), caching, and source. Minor details like pagination are not mentioned, but overall it is sufficiently 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.

Parameters4/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 value by providing examples (e.g., 'SEC, Food and Drug Administration'), default behaviors ('defaults to all notices', 'defaults to last 90 days'), and format details (ISO 8601) that are not fully covered in the schema 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 uses a specific verb ('Fetch') and resource ('Federal Register notices and rules'), and clearly states the scope ('for a specific agency'). It also distinguishes itself from a sibling tool by explicitly mentioning when to use an alternative for topic filtering across all agencies.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('monitor recent regulatory activity for an agency') and provides a clear alternative ('Use regulatory_search_open_rulemakings instead when filtering by topic across all agencies'). It also gives instructions for handling insufficient responses by calling report_feedback.

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

regulatory_search_open_rulemakingsA
Read-onlyIdempotent

Search open rulemakings and public comment periods on Regulations.gov and the Federal Register. Read-only. No side effects. Idempotent. US federal only. keyword: Topic keywords e.g. artificial intelligence, data privacy. Required. agency: Agency abbreviation e.g. FTC, FDA, SEC, EPA. Optional, defaults to all agencies. status: One of open, closed, or all. Optional. Default open. Returns docket title, agency, comment deadline, docket ID, and document count. Use this when monitoring regulatory activity on a topic. Use regulatory_fetch_docket_details instead when you have a docket ID and need full detail. Verified source: Regulations.gov + Federal Register. 4-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="regulatory_search_open_rulemakings", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
agencyNoAgency abbreviation e.g. FTC, FDA, SEC. Optional.
statusNoFilter: open, closed, or all. Default open. Optional.open
keywordYesTopic keywords e.g. artificial intelligence. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds useful behavioral context: 'US federal only', '4-hour cache', 'Verified source', and a feedback mechanism if results are unsatisfactory. Some redundancy with annotations but still adds value.

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?

Well-structured with front-loaded purpose, parameter list, usage guidance, and feedback mechanism. Some redundancy (e.g., 'Read-only. No side effects. Idempotent.' repeated from annotations) but overall concise and efficient.

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?

With an output schema present, the description appropriately summarizes return fields (title, agency, comment deadline, etc.). It also addresses error handling via report_feedback. Covers all necessary context for a simple query 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%; the description repeats parameter info found in the schema (keyword required, agency optional, status optional with default) but adds no new semantic meaning beyond what the schema already 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 clearly states the action ('Search open rulemakings and public comment periods'), specifies the resource (Regulations.gov and Federal Register), and distinguishes from a sibling tool (regulatory_fetch_docket_details) by noting when to use each.

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

Usage Guidelines5/5

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

Explicitly advises when to use this tool ('when monitoring regulatory activity on a topic') and when to use an alternative ('when you have a docket ID and need full detail'). Also notes caching and source verification.

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

report_feedbackB
Read-only

Report a data quality issue or agent intent gap for a DataNexus tool response.

tool_id: e.g. "T10" or "security_fetch_cve_detail". query_hash: From the query_hash field of the response. signal: incorrect_data | missing_field | stale_data | not_useful | wrong_entity | data_quality. comment: Issue description. Max 500 chars. missing_fields: Absent or wrong field names. feedback_type: "user_feedback" (default) or "agent_gap". intended_query: Agent's goal. Max 256 chars. gap_description: What was missing. Max 256 chars.

Example: report_feedback(tool_id="T10", query_hash="abc123", signal="incorrect_data")

ParametersJSON Schema
NameRequiredDescriptionDefault
signalYesOne of incorrect_data, missing_field, stale_data, not_useful, wrong_entity, or data_quality. Required for user_feedback.
commentNoDescription of the issue. Optional. Max 500 characters.
tool_idYesTool identifier, e.g. T04 or security_fetch_cve_detail. Required.
query_hashYesHash from the response being reported — found in the query_hash field of any response. Required.
feedback_typeNouser_feedback (default) or agent_gap. Use agent_gap when the tool returned a valid response but did not serve the user's actual need.user_feedback
intended_queryNoWhat the agent was trying to accomplish — used when feedback_type=agent_gap. Optional. Max 256 chars.
missing_fieldsNoList of field names that are absent or wrong. Optional.
gap_descriptionNoWhat was missing or wrong in the result — used when feedback_type=agent_gap. Optional. Max 256 chars.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior1/5

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

The description states the tool creates a report (a write operation), but annotations declare `readOnlyHint: true`, which implies no side effects. This is a direct contradiction. The description also does not clarify behavioral traits like side effects, data persistence, or response expectations beyond the contradiction.

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 informative but somewhat verbose. It includes parameter descriptions in a list format and an example, which helps structure. However, it could be more concise, as some points are redundant with 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 tool has 8 parameters, 3 required, and an output schema, the description covers basic usage but lacks important context due to the annotation contradiction. It does not explain return values or confirm whether the tool is idempotent, leaving gaps in 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%, so the description adds some value by providing an example and clarifying the use of `feedback_type` and `agent_gap`. However, it largely reiterates schema details without significant new meaning. Baseline is 3, and this meets 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 tool's purpose: 'Report a data quality issue or agent intent gap for a DataNexus tool response.' It uses specific verbs and resources, and it distinguishes from sibling tools that perform other functions like data retrieval or API management.

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 concrete example (`report_feedback(tool_id="T10", query_hash="abc123", signal="incorrect_data")`) that guides usage. It explains required and optional parameters, but does not explicitly state when not to use the tool or compare it to alternatives.

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

search_datanexus_toolsA
Read-onlyIdempotent

Find the right DataNexus tool by describing your task in plain English. Read-only. No side effects. Call this before any other DataNexus tool to reduce context load from 40000 to 800 tokens. query: Plain English description of your task e.g. check if a Python package has CVEs or look up a UK charity by name. Required. domain: Restrict results to one sub-server: nonprofit, security, compliance, domain, legal, govcon, or regulatory. Optional. Returns matching tool names and parameter hints you can call directly. Do not call this recursively or to validate results — use validate_tool_output for that. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="search_datanexus_tools", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesPlain English description of your task, e.g. 'check if a Python package has CVEs' or 'look up a UK charity by name'. Required.
domainNoRestrict results to one sub-server: nonprofit, security, compliance, domain, legal, govcon, or regulatory. Optional.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is clear. The description adds useful behavioral context beyond annotations, such as reducing context load from 40000 to 800 tokens and the open-world hint (no side effects confirmed). It also explains the tool's output (tool names and parameter hints) and provides fallback instructions. No contradictions with annotations.

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 relatively concise at about 120 words and well-structured: it begins with purpose, then parameter details, followed by usage instructions and fallback guidance. It is front-loaded with the key action. However, some parameter descriptions could be trimmed without losing clarity, preventing a perfect score.

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 complexity (2 parameters, many siblings, output schema present), the description covers all necessary aspects: purpose, when to use, when not to use, parameter explanations, expected output, and error handling (feedback). It also mentions that the tool reduces context load, which is a key operational detail. No gaps are apparent.

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%, so the schema already documents both parameters. The description adds semantic value by explaining the query parameter's purpose ('Plain English description of your task, e.g. ...') and the domain parameter's restriction to specific sub-servers. It also contextualizes them within the usage flow (e.g., reducing context load). While baseline is 3 due to high schema coverage, the description's extra guidance warrants a 4.

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: 'Find the right DataNexus tool by describing your task in plain English.' It specifies it is read-only and has no side effects, and distinguishes it from siblings by instructing to call it before other tools and mentioning alternatives like validate_tool_output.

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

Usage Guidelines5/5

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

Explicit guidance is provided: 'Call this before any other DataNexus tool to reduce context load' and 'Do not call this recursively or to validate results — use validate_tool_output for that.' It also directs to report_feedback if the tool's response does not serve the user's need, giving clear when-to-use and when-not-to-use instructions.

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

security_audit_licence_compatibilityA
Read-onlyIdempotent

Audit the licence compatibility of your entire dependency list. Input package names (with ecosystem) or SPDX IDs; get a COMPATIBLE/CONFLICT verdict with specific conflicting pairs and recommended action. Uses static SPDX compatibility table — no network call for spdx_ids path. Package path resolves licences from deps.dev (max 10 concurrent). Max 50 items. Rate limit: 60/minute. No auth required. For developers and compliance teams auditing open source licence risk before shipping. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_audit_licence_compatibility", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
packagesNoList of {name, ecosystem} dicts to check compatibility. Optional.
spdx_idsNoList of SPDX licence identifiers to check compatibility. Optional.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds valuable behavioral context: 'No auth required,' 'Rate limit: 60/minute,' 'Max 50 items,' and details about static vs. network-dependent paths. No contradictions with 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 paragraph that front-loads the main action. Every sentence adds value: purpose, input format, output, behavior notes (static vs network), limits, rate limit, auth, target audience, and fallback instruction. No wasted words; compact yet complete.

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 complexity (two input paths, multiple constraints), the description covers all necessary aspects: inputs, processing behavior, output nature, rate limits, concurrency, audience, and error handling via feedback. Although no output schema is provided, the description sufficiently describes the verdict format.

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%, so the baseline is 3. The description adds meaning by explaining the two input paths: 'Input package names (with ecosystem) or SPDX IDs' and noting that the package path uses deps.dev while SPDX IDs use a static table. This clarifies the difference between the two optional parameter groups.

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: 'Audit the licence compatibility of your entire dependency list.' It specifies inputs (package names with ecosystem or SPDX IDs) and outputs (COMPATIBLE/CONFLICT verdict with conflicting pairs and recommended action). This distinguishes it from sibling tools like 'security_fetch_licence_analysis' which may focus on fetching rather than compatibility analysis.

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 explicit usage context: 'For developers and compliance teams auditing open source licence risk before shipping.' It also gives performance hints (static SPDX table, deps.dev network calls, concurrency limit). However, it does not explicitly state when to use this tool over siblings, nor does it provide 'when not to use' guidance, though the fallback instruction partially addresses cases where the tool doesn't meet needs.

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

security_audit_sbom_continuousA
Destructive

Persistent SBOM watch. Register once, check anytime for new CVEs affecting your dependency snapshot. Silent permanent watch — CycloneDX and SPDX supported. Uses OSV.dev for vulnerability lookup, Redis for persistence with 90-day TTL. Supports CycloneDX 1.4/1.5 and SPDX 2.3 JSON. Input size limit: 500 KB. Returns go_no_go signal on register; new_findings on check. Rate limit: 10/minute. No auth required. For DevSecOps teams monitoring production dependency exposure. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_audit_sbom_continuous", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
sbomYesCycloneDX or SPDX SBOM as JSON string. Required for register action.
actionYesAction: register, check, or deregister the SBOM watch. Required.
watch_idYesUnique watch identifier for this SBOM watch. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (destructiveHint=true, openWorldHint=true), the description details persistent behavior (90-day TTL, Redis), input limits (500 KB), return signals (go_no_go, new_findings), and rate limits (10/min). No contradictions with annotations; adds significant value.

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 dense and efficient, covering all essential aspects in a few sentences with no redundant phrases. Important details are front-loaded (persistent watch, formats), and secondary details follow logically.

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 complexity (stateful watch, multiple actions, persistence), the description covers registration, checking, deregistration, formats, storage, limits, rate limits, auth, and error reporting. Output schema exists, so return values need not be detailed. Complete for effective 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%, so baseline is 3. The description reinforces that sbom is required for register, watch_id is unique, and action has three values, but adds no new information beyond the schema's descriptions. Minimal added 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?

The description clearly defines the tool as a persistent SBOM watch for continuous monitoring of CVEs, differentiating it from sibling one-off scanning tools like security_audit_sbom_vulnerabilities. Specific verbs like 'Register once, check anytime' and supported formats (CycloneDX, SPDX) make purpose unambiguous.

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 explicitly targets DevSecOps teams monitoring production dependencies and provides rate limits and auth requirements. While it doesn't formally exclude other uses, the context implies a specific niche. The fallback instruction for report_feedback guides when the tool fails to meet needs.

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

security_audit_sbom_license_policyA
Read-onlyIdempotent

Audit a CycloneDX or SPDX SBOM against an SPDX licence policy and return a PASS/WARN/BLOCK verdict. sbom: Full SBOM as a JSON string — CycloneDX or SPDX format. Required. 500 KB max. policy: Optional dict with block/warn/allow arrays of exact SPDX licence identifiers (e.g. GPL-3.0, MIT). Defaults to block GPL-3.0 and AGPL-3.0, warn LGPL-2.1/MPL-2.0/BSD-4-Clause, allow MIT/Apache-2.0/BSD-2-Clause/BSD-3-Clause. No glob patterns — exact SPDX IDs only. Unlisted licences default to WARN. Returns verdict (PASS/WARN/BLOCK), blocked_packages, warned_packages, and the policy applied. Use security_audit_sbom_vulnerabilities for CVE auditing instead. Sources: deps.dev (Google). 1-hour cache per package. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_audit_sbom_license_policy", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
sbomYesCycloneDX or SPDX SBOM as JSON string. Required. 500 KB max.
policyNoPolicy dict with block/warn/allow arrays of SPDX licence IDs. Optional.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description adds context beyond annotations: 1-hour cache, return structure, source (deps.dev). Annotations already declare readOnly and idempotent, but description enriches with operational details.

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 comprehensive and well-structured but slightly verbose. Every sentence adds value, but could be tightened slightly for agent efficiency.

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 presence of an output schema, the description does not need to detail return values beyond what it provides. It covers source, cache, alternative tool, and policy defaults comprehensively.

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

Parameters5/5

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

Schema coverage is 100%, but description adds critical details: max SBOM size (500 KB), exact SPDX IDs for policy, default policy values, and behavior for unlisted licenses. All parameters are thoroughly explained.

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 audits an SBOM against a license policy and returns a verdict (PASS/WARN/BLOCK). It also explicitly distinguishes from the sibling tool for CVE auditing.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'Use security_audit_sbom_vulnerabilities for CVE auditing instead.' It also specifies default policy behavior and restrictions for policy parameters.

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

security_audit_sbom_vulnerabilitiesA
Read-onlyIdempotent

Audit a Software Bill of Materials for known vulnerabilities across all listed packages. Read-only. No side effects. Idempotent. sbom_json: CycloneDX or SPDX SBOM as a JSON string. Required. Large SBOMs (100+ packages) may take up to 10 seconds. Returns CVEs grouped by package with severity and fixed versions. Use this when you have a full SBOM to audit. Use security_fetch_package_vulnerabilities instead when checking a single package version. Verified source: Google OSV.dev batch API. 1-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_audit_sbom_vulnerabilities", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
sbom_jsonYesCycloneDX or SPDX SBOM as JSON string. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint false, idempotentHint, and openWorldHint. The description adds useful context: 'Large SBOMs (100+ packages) may take up to 10 seconds. Returns CVEs grouped by package with severity and fixed versions. Verified source: Google OSV.dev batch API. 1-hour cache.' This enhances transparency beyond 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 concise and well-structured, with purpose, behavior, parameter, usage, and feedback all covered in a few efficient sentences. No wasted 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 complexity of SBOM auditing, the description comprehensively covers purpose, usage, parameter format, performance caveats, return structure, source verification, caching, and fallback. Output schema exists, so no need to detail return types.

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% for the single parameter sbom_json. The description adds minimal value by specifying accepted formats (CycloneDX or SPDX), but largely repeats schema info. 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 tool's purpose: 'Audit a Software Bill of Materials for known vulnerabilities across all listed packages.' It specifies the resource (SBOM) and action, and distinguishes from sibling security_fetch_package_vulnerabilities by noting the former is for full SBOMs.

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

Usage Guidelines5/5

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

Explicit usage guidance is provided: 'Use this when you have a full SBOM to audit. Use security_fetch_package_vulnerabilities instead when checking a single package version.' It also includes a fallback feedback mechanism for incomplete results.

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

security_detect_typosquattingA
Read-onlyIdempotent

Detect typosquatting attacks against a package name. Compares using Damerau-Levenshtein distance ≤ 2 against top-10,000 packages. Returns similar_packages with anomaly scores, and a SUSPICIOUS or CLEAN verdict. Uses PyPI and npm download stats stored in Redis. Cold-start fetch on first call (≤ 30s). Rate limit: 60/minute. No auth required. For security engineers auditing supply-chain package names before inclusion. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_detect_typosquatting", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem: npm, pypi, cargo, go. Required.
package_nameYesPackage name e.g. requests. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by disclosing no authentication required, a rate limit of 60/minute, cold-start fetch behavior (≤30s), and output information (similar_packages with anomaly scores and verdict). This contextualizes the tool's behavior beyond the 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 concise (5 sentences) and front-loaded with the core functionality. It includes essential details (distance algorithm, output, rate limit, auth, cold-start, and fallback) without redundancy. Every sentence adds value.

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 complexity and the presence of a full input schema, annotations, and output schema (not shown but noted), the description covers all necessary aspects: purpose, algorithm, inputs, outputs, performance, rate limit, auth, and even a guidance for reporting issues. It is complete for an AI agent to use 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?

Input schema covers both parameters with descriptions and enum values, achieving 100% coverage. The description does not add parameter-specific details but provides algorithmic context (distance metric and package reference set). Baseline score of 3 is appropriate given the schema's completeness.

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 precisely states the tool's purpose: detecting typosquatting attacks against a package name using Damerau-Levenshtein distance. It clearly specifies the resource (package name) and the method (comparison against top-10,000 packages), distinguishing it from other sibling tools.

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 indicates the target audience (security engineers auditing supply-chain packages) and provides a fallback instruction for reporting if the tool doesn't serve the need. However, it does not explicitly exclude alternatives or specify when not to use this tool versus similar siblings.

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

security_fetch_cisa_kevA
Read-onlyIdempotent

Check whether a CVE is in the CISA Known Exploited Vulnerabilities (KEV) catalog. Read-only. No side effects. Idempotent. cve_id: CVE identifier in format CVE-YYYY-NNNNN e.g. CVE-2021-44228. Required. Returns in_kev (bool), date_added, due_date, ransomware_use, and notes from the CISA KEV catalog. KEV status answers 'Is this being actively exploited?' — a critical triage question not available in NIST NVD. Verified source: CISA KEV catalog (updated daily, cached). Use security_fetch_cve_detail for full CVE severity. Use security_fetch_cve_epss for exploit probability. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_cisa_kev", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier e.g. CVE-2021-44228. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description restates 'Read-only. No side effects. Idempotent' but adds useful context: 'CISA KEV catalog (updated daily, cached)' and describes output structure. No contradictions.

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 well-structured, starting with purpose, then properties, usage guidance, and feedback. Every sentence adds value, though it could be slightly more concise. Still efficient.

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?

For a simple tool with one parameter, annotations, and output schema, the description covers input format, output fields, source, usage guidance, and error handling via report_feedback. Completely adequate.

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 cve_id. The description repeats the format but adds no new meaning 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?

The description clearly states the tool's purpose: 'Check whether a CVE is in the CISA Known Exploited Vulnerabilities (KEV) catalog.' It specifies the resource, action, and distinguishes from sibling tools like security_fetch_cve_detail and security_fetch_cve_epss.

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

Usage Guidelines5/5

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

Explicitly provides when to use (critical triage question not available in NVD) and alternatives: 'Use security_fetch_cve_detail for full CVE severity. Use security_fetch_cve_epss for exploit probability.' Also includes a feedback fallback mechanism.

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

security_fetch_cve_detailA
Read-onlyIdempotent

Fetch full detail for a specific CVE by ID. Read-only. No side effects. Idempotent. cve_id: CVE identifier in format CVE-YYYY-NNNNN e.g. CVE-2021-44228. Required. Returns description, CVSS base score, affected products, patch references, and publish date. Use this when you have a CVE ID and need complete detail beyond what a package scan returns. Use security_fetch_package_vulnerabilities instead when you want all CVEs for a package version. Verified source: NIST NVD. 1-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_cve_detail", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier e.g. CVE-2021-44228. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description confirms 'Read-only. No side effects. Idempotent.' and adds 'Verified source: NIST NVD. 1-hour cache.' This provides useful context about data freshness and reliability.

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?

Every sentence adds value: purpose, traits, parameter, usage guidance, source/cache, and fallback instruction. The structure is logical and concise, with no redundancy.

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 tool (one parameter, output schema present), the description fully covers purpose, parameters, return fields, source, caching, and usage guidance. It also specifies when to use an alternative tool and how to report 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 input schema already has 100% coverage for the single parameter, including its format and required status. The description repeats this information without adding new semantics, 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 verb 'Fetch' and resource 'full detail for a specific CVE by ID'. It also distinguishes from the sibling tool security_fetch_package_vulnerabilities, making the purpose unambiguous.

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

Usage Guidelines5/5

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

Explicitly states when to use ('when you have a CVE ID') and when not to ('use security_fetch_package_vulnerabilities instead'). Also provides fallback instructions for requesting feedback if the tool's output is insufficient.

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

security_fetch_cve_epssA
Read-onlyIdempotent

EPSS exploit probability score for a CVE — predicts likelihood of exploitation in the next 30 days.

cve_id: CVE identifier e.g. "CVE-2021-44228".

Returns: epss (float 0.0–1.0) and percentile (float 0.0–100.0). Thresholds: >0.7 patch immediately, 0.3–0.7 patch soon, <0.3 monitor. Use with security_fetch_cve_detail to prioritize patching — EPSS measures urgency, CVSS measures severity. Source: FIRST.org. 6-hour cache.

Example: fetch_cve_epss(cve_id="CVE-2021-44228")

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier e.g. CVE-2021-44228. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. Description adds caching behavior (6-hour cache), source (FIRST.org), and return format (epss and percentile). Provides valuable context beyond 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?

Description is well-structured: purpose, parameter, return values, thresholds, usage note, source, example. Front-loaded with the key action. Each sentence is necessary and no redundant content.

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?

Tool is simple with one parameter and good annotations. Description covers all essential details: purpose, parameter format, return values, thresholds, caching, source, and guidance for integration with sibling tools. No gaps identified.

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 parameter cve_id. Description repeats the param definition and adds an example usage with the exact format, clarifying that quotes are needed. Baseline 3 plus example adds 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?

Description clearly states it returns the EPSS exploit probability score for a CVE, predicting exploitation likelihood in the next 30 days. It distinguishes from sibling tools like security_fetch_cve_detail by explaining EPSS measures urgency while CVSS measures severity.

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 explicit thresholds for action (patch immediately if >0.7, patch soon if 0.3-0.7, monitor if <0.3) and suggests using with security_fetch_cve_detail to prioritize patching. Does not explicitly state when not to use, 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.

security_fetch_cve_risk_summaryA
Read-onlyIdempotent

Instant CVE risk verdict. Combines CVSS severity, CISA KEV exploitation status, and EPSS probability in one parallel call. Returns CRITICAL_EXPLOIT, HIGH_RISK, MODERATE, LOW, or UNKNOWN verdict with patch availability from vendor advisories. UNKNOWN means all upstream sources were unreachable — not that risk is low. Rate limit: 60/minute. No auth required. For security engineers triaging vulnerabilities after fetch_cve_watch fires. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_cve_risk_summary", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier e.g. CVE-2021-44228. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that it is a parallel call, explains the meaning of UNKNOWN ('UNKNOWN means all upstream sources were unreachable — not that risk is low'), and notes rate limit (60/minute) and no auth required, all beyond annotations.

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 paragraph that is information-dense but not overly long. It front-loads the purpose and includes necessary usage details. Slightly verbose with the report_feedback instruction, but that adds value.

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 has an output schema (not shown) and the description explains return values (verdicts and patch availability) and the meaning of UNKNOWN, it is complete for the complexity of the 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 schema already explains cve_id with an example. The description adds no additional parameter semantics, 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.

Purpose5/5

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

The description clearly states 'Instant CVE risk verdict' and specifies it combines CVSS severity, CISA KEV exploitation status, and EPSS probability. It distinguishes itself from sibling tools like security_fetch_cve_detail or security_fetch_cve_epss by providing a composite verdict.

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

Usage Guidelines5/5

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

It explicitly states the tool is 'For security engineers triaging vulnerabilities after fetch_cve_watch fires' and provides a fallback instruction to call report_feedback if the result doesn't serve the user's need, with specific parameters.

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

security_fetch_cve_watchA
Destructive

Persistent CVE watchlist. Create once, check anytime for new events since your last visit — patch releases, KEV listings, PoC publications, exploitation detected. Uses Redis for persistence, NVD + CISA KEV + EPSS for daily background refresh. Returns has_new_events, events (list), call_back_in="24h" on check. Rate limit: 60/minute. No auth required. For security engineers tracking CVE exposure over time. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_cve_watch", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction: create, check, or delete the watchlist. Required.
cve_idsYesList of CVE IDs to watch e.g. ['CVE-2021-44228']. Required for create.
watch_idYesUnique watch identifier to create, check, or delete. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

The description provides extensive behavioral context beyond annotations: it explains persistence via Redis, daily background refresh from NVD, CISA KEV, EPSS, return structure (has_new_events, events, call_back_in), rate limit (60/min), and no auth. This complements the annotations (destructiveHint, readOnlyHint) without contradiction.

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 fairly concise for its content, front-loading the core purpose. Each sentence adds value, though it could be slightly trimmed (e.g., the repetition of 'create, check, delete'). The structure is logical: purpose, features, return info, rate limit, target user, fallback.

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 complexity (3 params, all required, multiple actions, persistence), the description covers all necessary context: what it does, how it works (Redis, daily refresh), what it returns, rate limits, auth, and target audience. The presence of an output schema further reduces the need to detail return fields, though the description already mentions them.

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 100% of parameters with clear descriptions. The tool description restates the actions and CVE IDs but does not add new semantic details beyond the schema. Therefore, it meets the baseline for high 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 identifies the tool as a persistent CVE watchlist, specifying the verb 'create, check, delete' and the resource (CVE watchlist). It distinguishes from siblings by emphasizing persistence and periodic updates, and contrasts with one-off CVE queries.

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 explicitly targets security engineers tracking CVE exposure over time. It includes a fallback to report_feedback if the tool does not serve the need. However, it does not explicitly mention when to use this tool over siblings like security_fetch_cve_detail or security_fetch_cve_risk_summary.

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

security_fetch_cve_watch_statusA
Read-onlyIdempotent

Check all specified CVE watches for new events since your last poll. Returns only watches with new events, making it efficient to run on a schedule. watch_ids: List of watch IDs to check — same IDs used when creating watches with security_fetch_cve_watch. Required. Uses a per-user cursor (last_polled timestamp) stored in Redis. First call returns events from the last 30 days. Subsequent calls return only events newer than the last poll. Sources: Redis (existing watch data written by security_fetch_cve_watch). No external API calls — instant response. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_cve_watch_status", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
watch_idsYesList of watch IDs to check e.g. ['watch-1','watch-2']. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations: Redis cursor, first call returns last 30 days, subsequent calls return newer events, no external API calls, instant response. Annotations already declare readOnly=true, etc., but description enriches understanding.

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 thorough but slightly verbose. However, it is well-structured with clear sentences and front-loads the main purpose. Each sentence adds value.

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, output schema exists), the description covers all necessary aspects: purpose, behavior, parameter guidance, and a fallback mechanism. It is complete for effective 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% and the parameter is well-described. The description adds value by linking watch_ids to those used in security_fetch_cve_watch, providing real-world context. No extra syntax details needed.

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 checks CVE watches for new events since last poll, using a specific verb and resource. It distinguishes from sibling tools like security_fetch_cve_watch which creates watches, and clarifies that it returns only watches with new events.

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 recommends running on a schedule for efficiency and explains the cursor mechanism. It does not explicitly state when not to use, but the context is clear. A fallback to report_feedback is provided for cases where the tool doesn't meet the user's need.

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

security_fetch_dependency_graphA
Read-onlyIdempotent

Fetch the full dependency tree for a package version including transitive dependencies. Read-only. No side effects. Idempotent. Hard 8-second timeout — large dependency trees may return partial results. package: Package name. Required. version: Exact version string e.g. 1.2.3. Required. ecosystem: One of PyPI, npm, Maven, Go, Cargo, NuGet, RubyGems. Required. Returns all direct and transitive dependencies with version constraints. Use this to understand full supply chain exposure. Use security_fetch_package_vulnerabilities instead when you only need CVEs for a single package. Verified source: deps.dev (Google). 1-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_dependency_graph", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
packageYesPackage name e.g. requests. Required.
versionYesPackage version e.g. 2.28.0. Required.
ecosystemYesPackage ecosystem: npm, pypi, cargo, go, maven, nuget. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint; description adds hard 8-second timeout, partial results, 1-hour cache, verified source. No contradictions.

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?

Informative but slightly verbose with fallback instruction. Could be more concise while retaining key details.

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 output schema exists, description covers timeout, cache, source, usage differentiation, and fallback mechanism. Complete for this tool.

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%; description adds version format example and ecosystem list, slightly enhancing meaning 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?

Clearly states it fetches the full dependency tree for a package version including transitive dependencies. Distinguishes from sibling tool security_fetch_package_vulnerabilities.

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

Usage Guidelines5/5

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

Explicitly says when to use (understand full supply chain exposure) and when not (use security_fetch_package_vulnerabilities for single package CVEs). Mentions timeout and partial results.

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

security_fetch_licence_analysisA
Read-onlyIdempotent

Understand any software licence in plain English. Returns obligations, permissions, limitations, risk level, and OSI/FSF status for any SPDX licence identifier. Static bundle covers top-50 common licences (no network call). Falls back to spdx.org API for rare identifiers. All risk levels assume proprietary/commercial use. Rate limit: 60/minute. No auth required. For security engineers and developers understanding what a licence allows before including a dependency. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_licence_analysis", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
spdx_idYesSPDX licence identifier e.g. MIT, Apache-2.0, GPL-3.0. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, and open-world. The description adds rich details: static bundle for common licences, fallback to API, assumption of proprietary/commercial use, rate limit (60/min), no auth required. All non-contradictory.

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 dense with useful information and well-structured, front-loading the purpose. It could be slightly more concise, but every sentence provides value.

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 parameter, output schema exists, annotations present), the description is fully complete: it covers input, output, behavior, fallback, assumptions, rate limit, auth, and even a feedback mechanism. No gaps.

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 clear description for spdx_id. The description adds examples (MIT, Apache-2.0) and context about the static bundle, which is not in the schema. This goes beyond 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 what the tool does: it provides a plain-English explanation of a software licence given an SPDX identifier, listing obligations, permissions, limitations, risk level, and OSI/FSF status. It distinguishes itself from siblings by focusing on SPDX identifiers rather than package-level queries.

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 specifies the target audience and use case: security engineers and developers assessing a licence before including a dependency. It also provides fallback behavior (static bundle vs. API) and rate limit info. However, it does not explicitly differentiate from sibling tools like security_fetch_package_licence.

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

security_fetch_package_licenceA
Read-onlyIdempotent

Fetch the SPDX licence identifier for an open source package version. Read-only. No side effects. Idempotent. package: Package name e.g. flask. Required. version: Exact version string e.g. 2.3.0. Required. ecosystem: One of PyPI, npm, Maven, Go, Cargo, NuGet, RubyGems. Required. Returns the SPDX licence identifier e.g. MIT, Apache-2.0, GPL-3.0. Use this to verify licence compatibility before including a dependency. Use security_fetch_package_vulnerabilities instead when checking for security issues not licences. Verified source: deps.dev (Google). 1-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_package_licence", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
packageYesPackage name e.g. requests. Required.
versionYesPackage version e.g. 2.28.0. Required.
ecosystemYesPackage ecosystem: npm, pypi, cargo, go, maven, nuget. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare readOnly, no destruction, idempotent. Description repeats and adds context: 'Read-only. No side effects. Idempotent.', plus caching (1-hour) and data source (deps.dev). No contradictions.

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?

Well-structured: main action first, then safety, parameters, usage, alternatives, source/cache, feedback. Every sentence adds necessary information without redundancy.

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 and presence of output schema, the description covers all needed aspects: purpose, parameters, return format, usage context, alternatives, caching, and feedback. No gaps.

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 basic descriptions. The description adds concrete examples (e.g., 'flask', '2.3.0') and lists valid ecosystems explicitly, providing value 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?

The description clearly states the action ('Fetch the SPDX licence identifier') and the resource ('open source package version'). It distinguishes from the sibling tool security_fetch_package_vulnerabilities by noting the different purpose (licence compatibility vs security issues).

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

Usage Guidelines5/5

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

Explicitly tells when to use ('verify licence compatibility before including a dependency') and when not to ('use security_fetch_package_vulnerabilities instead'). Also includes a feedback mechanism for agent gaps.

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

security_fetch_package_maintainer_historyA
Read-onlyIdempotent

Analyse ownership and release history for an npm or PyPI package to detect supply-chain risk. Uses PyPI JSON API and npm registry — data refreshed on each call, 1-hour cache. Returns maintainer_count, recent_changes, ownership_transfers, account_ages, anomaly_score (0.0–1.0), and maintainer_health (healthy | stale | abandoned | suspicious). Rate limit: 60/minute. No auth required. For security engineers auditing open-source dependencies before inclusion in production builds. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_package_maintainer_history", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
ecosystemYesPackage ecosystem: npm, pypi, cargo, go. Required.
package_nameYesPackage name e.g. requests. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations: data sources (PyPI JSON API and npm registry), refresh behavior (each call, 1-hour cache), rate limit (60/minute), authentication requirements (no auth), and a detailed list of outputs including the anomaly_score range and maintainer_health values. No contradiction with annotations.

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 paragraph covering purpose, sources, caching, outputs, rate limit, auth, audience, and feedback. It is well-structured and front-loaded with the main purpose. Each sentence adds value, though it could be slightly more concise.

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 presence of an output schema (mentioned in context signals), the description lists all key return fields and their types (e.g., anomaly_score 0.0–1.0, maintainer_health categorical values). It also explains data freshness, caching, and API usage. The tool is fully specified for its intended use 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?

Schema description coverage is 100%, so the input schema already documents both parameters. The description adds minimal value with an example ('e.g. requests') but does not provide additional meaning beyond what the schema offers. Baseline 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 explicitly states the tool's purpose: 'Analyse ownership and release history for an npm or PyPI package to detect supply-chain risk.' It identifies the verb ('Analyse'), resource (npm or PyPI package), and outcome (detect supply-chain risk). It distinguishes from sibling tools by focusing on maintainer history with specific outputs like anomaly_score and maintainer_health.

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 specifies the target user: 'For security engineers auditing open-source dependencies before inclusion in production builds.' It provides a fallback instruction to report feedback if the tool's response is unsuitable. While it does not explicitly state when not to use it or list alternatives, the context is clear and actionable.

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

security_fetch_package_risk_briefA
Read-onlyIdempotent

Single SHIP/CAUTION/BLOCK verdict for any package. Combines CVEs, licence, maintainer health, and transitive count in one call. Uses OSV.dev, deps.dev, PyPI, and npm registry — data refreshed on each call. Returns verdict (SHIP/CAUTION/BLOCK), critical_cve_count, high_cve_count, licence_risk, maintainer_health, transitive_count, resolved_version, upstream_status, and reasoning. Rate limit: 30/minute. No auth required. For security engineers performing pre-inclusion package review. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_package_risk_brief", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoPackage version e.g. 2.28.0. Required.
ecosystemYesPackage ecosystem: npm, pypi, cargo, go, maven. Required.
package_nameYesPackage name e.g. requests. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds rate limit (30/minute), data refresh behavior, no auth required, and lists return fields. No contradictions with annotations.

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 paragraph but well-structured, front-loading the key verdict and then detailing components, return fields, and rate limit. It is mostly concise but contains a contradictory statement about version requiredness.

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?

Output schema exists but not shown; however, description lists return fields. The tool is complex but the description covers purpose, usage, behavior, and parameters adequately. The minor contradiction prevents a perfect score.

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

Parameters2/5

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

Schema coverage is 100%, so baseline is 3. However, the description states version is 'Required.' while the schema shows it is optional (not in required array, default null). This contradiction reduces the score. No additional meaning 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?

The description clearly states the tool provides a single verdict (SHIP/CAUTION/BLOCK) for any package by combining CVEs, license, maintainer health, and transitive count. It distinguishes from sibling tools like security_fetch_package_vulnerabilities and security_fetch_licence_analysis by being a unified risk brief.

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

Usage Guidelines5/5

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

Explicitly states the intended user (security engineers) and use case (pre-inclusion package review). Provides fallback guidance to call report_feedback if the tool does not serve the user's need, with specific parameters.

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

security_fetch_package_vulnerabilitiesA
Read-onlyIdempotent

Fetch all known CVEs for an open source package version or a batch of packages. Read-only. No side effects. Idempotent. Single-package mode: package (e.g. requests), version (e.g. 2.28.0), ecosystem (PyPI/npm/Maven/Go/Cargo/NuGet/RubyGems). Batch mode: packages array of {name, version, ecosystem} objects — max 50 per call. If packages array is provided and non-empty, batch mode is used and package/version/ecosystem are ignored. Batch returns {results: [...], partial: bool, failed_count: int}. Each result has vuln_count and vulnerabilities list. Returns CVE ID, severity, CVSS score, affected range, and fixed version. Use security_fetch_cve_detail for full detail by CVE ID. Use security_audit_sbom_vulnerabilities for SBOM files. Verified source: Google OSV.dev. 1-hour cache. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="security_fetch_package_vulnerabilities", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoPackage name e.g. requests. Required in single-package mode.
versionNoPackage version e.g. 2.28.0. Required in single-package mode.
packagesNoBatch list of {name, version, ecosystem} objects. Max 50.
ecosystemNoPackage ecosystem: npm, pypi, cargo, go, maven, nuget. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description reinforces with 'Read-only. No side effects. Idempotent.' and adds an important behavioral detail: 1-hour cache. No contradictions.

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 moderately long but every sentence adds value. It is well-structured: starts with purpose, then details modes, then references, then source/cache, then feedback instruction. Could potentially be trimmed slightly, but it's efficient for the information density.

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?

For a tool with two modes, batch limits, and a multi-field output, the description covers everything: single/batch inputs, batch response structure, source verification (Google OSV.dev), caching behavior, and a fallback for inadequacy. Given the complexity (4 params, 0 required, but conditional logic), it is comprehensive.

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

Parameters5/5

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

Schema coverage is 100% with descriptions, but the description adds significant context: explains the two parameter groups (single vs batch), how packages array overrides individual params, the batch response format (results, partial, failed_count), and details of each result. This goes well 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?

The description clearly states 'Fetch all known CVEs for an open source package version or a batch of packages' and distinguishes single vs batch modes. It also references sibling tools for complementary tasks, so the purpose is specific and differentiated.

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

Usage Guidelines5/5

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

Provides explicit when-to-use instructions: single vs batch mode, max batch of 50, that batch overrides single params. Also advises using security_fetch_cve_detail for full CVE details and security_audit_sbom_vulnerabilities for SBOM files. Includes a fallback to report_feedback if the tool doesn't serve the need.

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

validate_tool_outputA
Read-onlyIdempotent

Validate a DataNexus tool response for data quality issues using two-layer validation: deterministic rules first, then AI review for ambiguous cases. Read-only. Never blocks. tool_id: DataNexus tool identifier e.g. T04, T10, T22. Required. Find in the tool_id field of any response. query_hash: Hash from the response you are validating. Required. Enables feedback correlation. response_json: Full tool response serialised as a JSON string. Required. Returns pass or issues_found, with issues from each layer and whether feedback was auto-filed. Both layers must agree before feedback is filed. Use validate_tool_output to check data quality. Use report_feedback instead to manually report an issue you have already identified. If this tool's response does not serve the user's need, call report_feedback with feedback_type="agent_gap", tool_id="validate_tool_output", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_idYesDataNexus tool identifier, e.g. T04, T10, T22 — found in the tool_id field of any response. Required.
query_hashYesHash from the response being validated — found in the query_hash field of any response. Enables feedback correlation. Required.
response_jsonYesThe full tool response, serialised as a JSON string, to validate for data quality issues. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, destructiveHint, idempotentHint), the description adds that it is read-only, never blocks, uses two-layer validation with deterministic rules and AI review, both layers must agree before feedback is filed, and it auto-files feedback. This provides comprehensive behavioral context without contradicting annotations.

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 detailed but well-structured: purpose first, then parameter details, then output and usage guidance. It is front-loaded and efficient, though slightly verbose. Every sentence adds value, with no fluff.

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 complexity (two-layer validation, feedback integration), the description covers the workflow, return values (pass/issues_found, layers, feedback status), and error handling via report_feedback. It is complete and provides all necessary context for an agent to use the tool correctly.

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 descriptions for all three parameters. The description enriches these by explaining where to find the tool_id and query_hash (e.g., 'Find in the tool_id field of any response'), and clarifies that response_json should be the full serialised response. This adds usability 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?

The description clearly states the tool validates DataNexus tool responses for data quality issues using two-layer validation. It specifies the verb 'validate' and the resource 'DataNexus tool response', and distinguishes itself from siblings like 'report_feedback' by contrasting automated validation vs manual reporting.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('Use validate_tool_output to check data quality') and when to use the alternative 'report_feedback' for manual reporting or when the tool's response doesn't serve the user's need. Also provides detailed instructions for handling gaps via feedback.

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

TDQS

A4.1/5.0
Disambiguation5/5

Tools are clearly distinguished by domain prefixes and specific actions. Within each domain, tools have distinct purposes (e.g., compliance_check vs fetch vs search). Even similar tools like security_fetch_package_vulnerabilities and security_fetch_package_risk_brief are differentiated by scope and output. An agent can reliably select the correct tool.

Naming Consistency4/5

Most tools follow a consistent `domain_verb_noun` pattern in snake_case (e.g., `domain_fetch_dns_records`, `compliance_search_npi_by_name`). Minor deviations include `report_mcpize_link` (verb order) and `apikeys_generate_api_key` (redundant 'api_key'), but overall the pattern is predictable.

Tool Count3/5

55 tools is high for a single server, but the server covers multiple distinct domains (security, compliance, domain, legal, etc.), each with a reasonable number of tools. The inclusion of a search tool (`search_datanexus_tools`) helps mitigate information overload, though the count still feels heavy for an agent to manage.

Completeness5/5

The tool set provides comprehensive coverage across its domains: API key lifecycle, compliance lookups, domain intelligence, frontend security, government contracts, patents, nonprofits, regulatory rulemakings, and a wide range of security tools (CVEs, packages, SBOMs, licences, etc.). No obvious gaps are apparent for the stated purposes.

Maintenance

ActivitySlowing
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.
    2
    1,444
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP Server implementation that integrates the Brave Search API, providing, Web Search, Local Points of Interest Search, Image Search, Video Search, News Search and LLM Context Search capabilities
    5
    259
    125
    GPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    An MCP implementation that integrates the Brave Search API, providing comprehensive search capabilities including web, local business, image, video, news searches, and AI-powered summarization.
    8
    15,853
    1,409
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides access to over 800,000 economic time series from the Federal Reserve, allowing users to browse, search, and retrieve data for indicators like GDP and unemployment. It supports custom date ranges and data transformations such as percentage changes or frequency aggregations.
    3
    396
    117
    AGPL 3.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/datanexusmcp/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server