DataNexus MCP
OfficialDataNexus MCP provides AI agents with 30+ tools across 7 verticals to access authoritative public data, pre-formatted as token-efficient AI-Ready Markdown, without requiring API keys for most tools.
Tool Discovery & Utility
search_datanexus_tools— Find the right tool by describing your task in plain Englishvalidate_tool_output— Two-layer validation (deterministic + AI) of any tool responsereport_feedback— Report data quality issues (incorrect, stale, missing) for any tool responsereport_mcpize_link— Check subscription/pricing status and retrieve upgrade URLs
Nonprofit Research
Look up US nonprofits by EIN to get IRS 990 financials (revenue, expenses, assets, NTEE code)
Search US nonprofits by name with optional state filter
Fetch UK registered charity details including income, activities, and registration status
Security & Vulnerability Intelligence
Check software packages for known CVEs across PyPI, npm, Maven, Go, Cargo, NuGet, RubyGems
Fetch full CVE details by ID including CVSS score, affected products, and patch references
Retrieve the full dependency tree for a package version
Audit a CycloneDX or SPDX SBOM against OSV.dev for vulnerabilities
Look up the SPDX licence identifier for any package version
Compliance Verification
Verify US healthcare providers by NPI number or search by name/state/specialty
Look up FINRA broker registration by CRD number including qualifications and disclosures
Check if a person or company is on the SAM.gov federal exclusions list
Domain & DNS Intelligence
Look up domain registration details (registrar, expiry, nameservers) via IANA RDAP
Inspect SSL certificate chains from Certificate Transparency logs
Query DNS records (A, AAAA, MX, TXT, NS, CNAME) via Cloudflare DoH
Retrieve historical certificate issuance records for a domain
Legal / Patent Research
Fetch full patent details by number across EP, US, and WO jurisdictions
Search patents by keyword and date across EPO, USPTO, and WIPO databases
Retrieve forward and backward patent citations for prior art research
Get the patent portfolio for a specific inventor with optional assignee filter
Government Contracting
Search US, EU, and UK federal contract awards by keyword, agency, and date
Fetch a vendor's full contract award history for competitive intelligence
Find currently open solicitations and bid opportunities by keyword
Regulatory Monitoring
Search open rulemakings and comment periods on Regulations.gov and Federal Register
Fetch full docket details by ID including status, comment count, and related documents
Retrieve recent Federal Register notices and rules for any agency
Provides vulnerability intelligence, dependency graph analysis, and license information for npm packages using OSV.dev, NVD, and deps.dev APIs.
Fetches known CVEs, transitive dependencies, and SPDX license identifiers for NuGet packages.
Offers package vulnerability details, dependency trees, and licensing checks for PHP packages from Packagist.
Supplies CVE data, dependency graphs, and license identifiers for Python packages from PyPI.
Delivers vulnerability intelligence, dependency depth analysis, and license verification for Ruby gems.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DataNexus MCPCheck vulnerabilities for express 4.18.2"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DataNexus MCP
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-serverFree 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 |
| Issue a new key — rate-limited to 3/IP/day |
| Revoke old key, issue replacement |
| 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 |
| Generate a free | None |
| Revoke current key and issue a replacement in one atomic operation | Current 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 |
| CVE list for any npm/PyPI/Go/Maven/Cargo package at a specific version. Batch up to 50 packages | OSV.dev | None |
| SPDX licence identifier for any package version | deps.dev | None |
| Full transitive dependency tree with CVE-flagged transitive deps highlighted via OSV cross-check. Hard timeout 8s | deps.dev + OSV.dev | None |
| Audit a CycloneDX or SPDX SBOM JSON against OSV.dev. CVEs grouped by package with severity | OSV.dev batch | None |
| Full CVE record — CVSS score, description, affected products, patch references | NIST NVD | None |
| Check whether a CVE is in the CISA Known Exploited Vulnerabilities catalog | CISA KEV | None |
| 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 |
| Single-call SHIP/CAUTION/BLOCK verdict combining CVEs, licence risk, maintainer health, and transitive count | OSV.dev + deps.dev + PyPI/npm | None |
| Maintainer ownership timeline and anomaly score. Flags sudden ownership transfers | PyPI + npm | None |
| DL-distance ≤ 2 against top-10,000 packages. Returns SUSPICIOUS/CLEAN verdict | PyPI + npm stats | None |
| Persistent CVE watchlist — create once, check anytime for patch releases, KEV listings, PoC publications | NVD + CISA KEV + OSV | None |
| Register a CycloneDX/SPDX SBOM once, check anytime for new CVEs | OSV.dev | None |
Licence Intelligence & CVE Aggregator
Tool | What it does | Source | Auth |
| Plain-English licence explainer. Risk level, obligations, permissions for any SPDX ID. Static bundle covers top-50 | SPDX list | None |
| COMPATIBLE/CONFLICT audit for up to 50 packages or SPDX IDs. Specific conflicting pairs with remediation | SPDX + deps.dev | None |
| 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 |
| 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 |
| 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 |
| 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 |
| Audit a | OSV.dev + deps.dev + npm | None |
| Scan GitHub Actions, Vercel, or Netlify configs for exposed secrets, unpinned actions, missing lockfile enforcement, and overly broad permissions. | Static analysis | None |
| npm-scoped SHIP/CAUTION/BLOCK risk brief with frontend-specific signals: | 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 |
| Full IRS 990 filing data for any US nonprofit — revenue, expenses, executive compensation, risk flags | ProPublica + IRS e-File | None |
| Search US nonprofits by name and optional state filter | ProPublica | None |
| UK registered charity details — income, trustees, activities | UK Charity Commission | None |
| Complete due diligence in one call — financials, exec pay, risk flags, health score (0–100), programme ratio, fundraising sustainability | ProPublica + IRS | None |
| Search by mission category (education, healthcare, arts, environment, human_services, civil_rights, international, religion, science, sports) or raw NTEE code | ProPublica | None |
| 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 |
| Check if an entity is excluded from US federal contracts (debarred) on SAM.gov | SAM.gov | None |
| NPI provider details — name, specialty, address, taxonomy codes | NPPES NPI Registry | None |
| Search NPI registry by provider name and state | NPPES NPI Registry | None |
| FINRA BrokerCheck registration, disclosures, and exam history | FINRA BrokerCheck | None |
Domain Intelligence (T07)
Tool | What it does | Source | Auth |
| A, AAAA, MX, TXT, NS, CNAME records for any domain | Cloudflare DoH | None |
| SPF, DMARC, and DKIM validation — misconfiguration flags, A–F grade | Cloudflare DNS | None |
| Domain registration details — registrar, registrant, creation date | RDAP | None |
| All domains co-hosted on the same IP address | HackerTarget | None |
| Enumerate subdomains via certificate transparency logs | crt.sh | None |
| Full SSL certificate chain — issuer, expiry, SANs | crt.sh | None |
| Historical SSL certificate issuance timeline | crt.sh | None |
Patent & Legal Intelligence (T11)
Tool | What it does | Source | Auth |
| Full patent record — claims, abstract, filing date, assignees, IPC classifications | EPO / USPTO / WIPO | None |
| Patent search across EPO, USPTO, and WIPO by keyword or phrase | EPO / USPTO / WIPO | None |
| All patents by a named inventor — portfolio size, filing dates, assignees | EPO / USPTO / WIPO | None |
| Forward and backward citation chains for a patent | EPO / USPTO / WIPO | None |
Government Contracts (T18)
Tool | What it does | Source | Auth |
| Federal contract award history for any vendor | USASpending.gov | None |
| Search contract awards by keyword, agency, or PSC code | USASpending.gov | None |
| Open contract opportunities currently accepting bids | SAM.gov | None |
Regulatory Intelligence (T19)
Tool | What it does | Source | Auth |
| Open rulemaking proceedings on Regulations.gov by keyword or agency | Regulations.gov | None |
| Full docket record — comments, documents, status | Regulations.gov | None |
| Recent Federal Register notices and rules by agency or keyword | Federal Register | None |
Shared Tools
Tool | What it does |
| Find the right DataNexus tool for your task by keyword |
| Report data quality issues or gaps |
| Returns subscription and payment tier status |
| 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
Hosted (recommended — no setup required)
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-serverVia npm (programmatic use)
npm install @datanexusmcp/mcp-serverChangelog
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 freednx_...key tied to your email (500 calls/month)apikeys_rotate_api_key— atomic key rotationapikeys_revoke_api_key— immediate revocation + Redis cache invalidation_UsageMiddleware— usage counting injected into every tool response at middleware level. Zero changes to existing tool filesAnonymous tier: 100 calls/month (IP-keyed). Registered tier: 500 calls/month (key-keyed)
PAYMENT_ENABLEDflag: 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 WARNsecurity_fetch_cve_watch_status— CVE watch polling inbox with per-user cursor. Returns only new events since last pollsecurity_fetch_dependency_graphenhanced —cvs_filtered_transitive_depsfield added: transitive deps with ≥1 open CVE highlighted via OSV.dev cross-checkfrontend_security_detect_typosquatting— DL-distance ≤ 2 against curated top-500 frontend corpusfrontend_security_audit_manifest—package.json→ SHIP/CAUTION/BLOCK with licence risks and abandonment signalsfrontend_security_audit_ci_pipeline— GitHub Actions/Vercel/Netlify secret scanner.${{ secrets.X }}safe refs never flaggedfrontend_security_fetch_package_risk_brief— npm-scoped risk brief withweekly_downloadsandis_ui_componentsignalsCATEGORIES.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_summarynonprofit_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_typosquattingsecurity_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.
Available Tools
55 toolsapikeys_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.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address to associate with the new API key. Used for delivery and repeat-signup lookup. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_keyADestructiveIdempotent
⚠️ 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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | API key (dnx_...) to permanently revoke. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_keyADestructive
⚠️ 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.
| Name | Required | Description | Default |
|---|---|---|---|
| current_key | Yes | Existing active API key (dnx_...) to revoke and replace. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_exclusionARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_ein | Yes | Entity name or EIN to check SAM exclusions. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_brokerARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| crd_number | Yes | FINRA CRD number e.g. 149777. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_providerARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| npi_number | Yes | 10-digit NPI number e.g. 1003000126. No dashes. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_nameARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full or partial provider name. Required. | |
| state | No | Two-letter US state code e.g. CA. Optional. | |
| speciality | No | Speciality keyword e.g. Cardiology. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_securityARead-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")
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain without protocol e.g. google.com. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_recordsARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain without protocol e.g. anthropic.com. Required. | |
| record_types | Yes | DNS record types e.g. ['A','MX','TXT']. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_historyARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain without protocol e.g. example.com. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_rdapARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain without protocol e.g. example.com. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_ipARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| domain_or_ip | Yes | Domain e.g. shared.dreamhost.com or IPv4 e.g. 1.2.3.4. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_chainARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain without protocol e.g. github.com. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_subdomainsARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain without protocol e.g. anthropic.com. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_pipelineARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | Raw YAML/TOML content of your CI config. Required. 500 KB max. | |
| config_type | No | CI config type: github_actions, vercel, or netlify. Default github_actions. | github_actions |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_manifestARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| lockfile | No | Contents of package-lock.json or yarn.lock. Optional. | |
| manifest | Yes | Contents of package.json as a string. Required. 500 KB max. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_typosquattingARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| ecosystem | No | Package ecosystem: npm or pypi. Default npm. | npm |
| package_name | Yes | Package name e.g. requests. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_briefARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Package version e.g. 2.28.0. Optional. | |
| package_name | Yes | Package name e.g. requests. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_solicitationsARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| agency | No | Awarding agency name. Optional, defaults to all agencies. | |
| keyword | Yes | Description of goods or services sought e.g. cloud computing. Required. | |
| jurisdiction | No | Jurisdiction: US, EU, or UK. Default US. Optional. | US |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_historyARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| vendor_name | Yes | Vendor or company name to search e.g. Booz Allen Hamilton. Required. | |
| jurisdiction | No | Jurisdiction: US, EU, or UK. Default US. Optional. | US |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_awardsARead-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")
| Name | Required | Description | Default |
|---|---|---|---|
| agency | No | Awarding agency name e.g. Department of Defense. Optional. | |
| keyword | Yes | Search terms describing the contract scope e.g. cybersecurity software. Required. | |
| date_from | No | Earliest award date ISO 8601 e.g. 2024-01-31. Optional. | |
| jurisdiction | No | Jurisdiction: US, EU, or UK. Default US. Optional. | US |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
legal_fetch_inventor_portfolioARead-onlyIdempotent
Fetch the patent portfolio for a named inventor with optional assignee filter. Read-only. No side effects. Idempotent. inventor_name: Inventor surname or full name e.g. Smith or John Smith. Required. Fuzzy match — common names may return many results. assignee: Company or organisation name to narrow results e.g. Apple Inc. Optional. Returns patent numbers, titles, filing dates, jurisdictions, and current status. Use this when researching an inventor's work or a company's patent portfolio. Use legal_search_patents_by_keyword instead when you need patents by topic not by inventor. Verified source: EPO OPS + USPTO. 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="legal_fetch_inventor_portfolio", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".
| Name | Required | Description | Default |
|---|---|---|---|
| assignee | No | Company name to filter results e.g. Apple Inc. Optional. | |
| inventor_name | Yes | Inventor surname or full name e.g. John Smith. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces annotations with statements like 'Read-only. No side effects. Idempotent.' and adds valuable behavioral context such as 'Fuzzy match — common names may return many results' and '24-hour cache'. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. It includes all necessary information without redundancy, though it is slightly lengthy due to the added parameter details and feedback instruction. Very effective overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters and an output schema, the description covers purpose, usage, behavioral traits (fuzzy match, cache, source), and even includes a fallback to report_feedback. It is fully complete 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds the fuzzy match warning for inventor_name, which provides critical behavioral context beyond the schema description. This additional information justifies a score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch the patent portfolio for a named inventor with optional assignee filter', specifying a distinct verb and resource. It also differentiates from the sibling tool legal_search_patents_by_keyword, making it easy for an AI agent to select the correct tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: 'Use this when researching an inventor's work or a company's patent portfolio. Use legal_search_patents_by_keyword instead when you need patents by topic not by inventor.' This clearly tells the agent when to use this tool and when to choose an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
legal_fetch_patent_by_numberARead-onlyIdempotent
Fetch full patent details by patent number and jurisdiction. Read-only. No side effects. Idempotent. patent_number: Patent number in EPODOC format e.g. EP1000000 for European, CN120586032 for Chinese, JP2020123456 for Japanese, WO2020123456 for PCT, US10000000 for US. Required. jurisdiction: Optional hint — one of EP, CN, JP, KR, US, WO, etc. Default EP. The tool normalises the patent number automatically; passing CN120586032 with jurisdiction EP is valid. Returns title, abstract, inventors, assignees, filing date, claims summary, and citation count. Use this when you have a specific patent number. Use legal_search_patents_by_keyword instead when you only have keywords and need to find patents. Verified source: EPO OPS. 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="legal_fetch_patent_by_number", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction | No | Patent office code: EP, US, WO. Default EP. Optional. | EP |
| patent_number | Yes | Patent number e.g. EP3456789 or US10123456. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 by stating 'Read-only. No side effects. Idempotent.', and further discloses automatic normalization, 24-hour cache, and verified source (EPO OPS). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Approximately 130 words, front-loaded with purpose. Every sentence adds value: action, read-only, parameter examples, normalization, output fields, usage guidance, caching, and feedback fallback. No superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, output schema present), the description is complete: it covers input format, behavior, output summary, caching, alternative tools, and a fallback mechanism. The output schema already describes return structure, so the summary is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description enriches parameter semantics with examples (e.g., EP1000000, CN120586032), clarifies jurisdiction default and optional nature, and explains normalization behavior. This goes beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'fetch' and resource 'patent details by patent number and jurisdiction'. It distinguishes itself from sibling tools like legal_search_patents_by_keyword and legal_fetch_patent_citations by specifying the use case 'when you have a specific patent number'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use guidance: 'Use this when you have a specific patent number. Use legal_search_patents_by_keyword instead when you only have keywords.' It also mentions the optional jurisdiction hint and includes a fallback instruction to report feedback if needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
legal_fetch_patent_citationsARead-onlyIdempotent
Fetch forward and backward citation chains for a specific patent. Read-only. No side effects. Idempotent. patent_number: Patent number in EPODOC format e.g. EP1000000 for European, CN120586032 for Chinese, JP2020123456 for Japanese, WO2020123456 for PCT, US10000000 for US. Required. jurisdiction: Optional hint — one of EP, US, WO, CN, JP, KR, etc. Default EP. The tool normalises the patent number automatically; passing CN120586032 with jurisdiction EP is valid. Returns citing patents (forward citations) and cited patents (backward citations) with filing dates and titles. Use this when building a prior art citation chain for a specific patent you already have. Use legal_search_patents_by_keyword instead when you need to find patents by topic not by citation. Verified source: EPO OPS. 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="legal_fetch_patent_citations", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction | No | Patent office code: EP, US, WO. Default EP. Optional. | EP |
| patent_number | Yes | Patent number e.g. EP3456789 or US10123456. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 by stating the source (EPO OPS), cache duration (24-hour), normalization behavior, and return structure (citing and cited patents with filing dates and titles). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, parameter details, use-case, alternative, source, cache, and fallback. Every sentence adds value, but it is somewhat verbose; slight trimming could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 params, output schema exists), the description is highly complete: it covers input formats, normalization, return structure, use-case, alternative, source reliability, cache policy, and a feedback mechanism. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds helpful examples for patent_number (EP1000000, CN120586032, etc.) and clarifies jurisdiction defaults and normalization behavior, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches forward and backward citation chains for a specific patent, using a specific verb and resource. It distinguishes from the sibling tool legal_search_patents_by_keyword by specifying the use case of prior art citation chains vs topic search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use: 'Use this when building a prior art citation chain for a specific patent you already have.' It also gives an alternative tool (legal_search_patents_by_keyword) and includes a fallback mechanism via report_feedback if the response 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.
legal_search_patents_by_keywordARead-onlyIdempotent
Search patents by keyword across EPO, USPTO, or WIPO. Read-only. No side effects. Idempotent. Returns up to 10 matches. keywords: Search terms describing the invention e.g. neural network image classification. Required. jurisdiction: One of EP, US, or WO. Optional. Default EP. date_from: Earliest filing date in ISO 8601 format e.g. 2020-01-31. Optional, defaults to no lower bound. Returns patent numbers, titles, and filing dates. Use this when finding prior art or exploring a technology landscape without a specific number. Use legal_fetch_patent_by_number instead when you have the patent number already. Verified source: EPO OPS + USPTO. 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="legal_search_patents_by_keyword", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | Search keyword or phrase e.g. CRISPR gene editing. Required. | |
| date_from | No | Earliest filing date ISO 8601 e.g. 2020-01-31. Optional. | |
| jurisdiction | No | Patent office code: EP, US, WO. Default EP. Optional. | EP |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds details like 'Returns up to 10 matches,' '24-hour cache,' and 'Verified source: EPO OPS + USPTO.' Also includes the feedback mechanism. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but well-organized, starting with purpose, then parameters, usage guidance, and additional notes. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters (all documented), an output schema exists, and the description covers return fields, limits, cache, source, and feedback. It fully addresses the needs for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The description adds value with examples (e.g., 'neural network image classification' for keywords, ISO 8601 format for date_from) and clarifies defaults and options (EP default for jurisdiction).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search patents by keyword across EPO, USPTO, or WIPO.' It specifies a specific verb and resource, and distinguishes from the sibling tool legal_fetch_patent_by_number.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when finding prior art or exploring a technology landscape without a specific number. Use legal_fetch_patent_by_number instead when you have the patent number already.' Also notes read-only, idempotent, no side effects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nonprofit_fetch_charity_ukARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| charity_number_or_name | Yes | UK charity number e.g. 1089464 or name substring. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_einARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| ein | Yes | EIN in format XX-XXXXXXX e.g. 46-5734087. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_financial_trendsARead-onlyIdempotent
5-year financial trend for any US nonprofit. Revenue growth, expense ratios, reserve trajectory, and health score history from IRS Form 990 data via ProPublica. Returns trend_direction (GROWING/STABLE/DECLINING/VOLATILE/INSUFFICIENT_DATA), CAGR, and year-by-year revenue, expense, and asset trends. years parameter: 1–10, default 5. Rate limit: 30/minute. No auth required. Complements nonprofit_fetch_nonprofit_full_profile by adding multi-year context. 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_financial_trends", intended_query="{what the user needed}", gap_description="{what was missing or wrong in the result}".
| Name | Required | Description | Default |
|---|---|---|---|
| ein | Yes | EIN in format XX-XXXXXXX e.g. 46-5734087. Required. | |
| years | No | Number of years of trend data 1-10. Default 5. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint as true, establishing safety and idempotency. The description adds valuable behavioral context beyond annotations: rate limit of 30/minute, no authentication required, and the feedback mechanism. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but well-structured: it front-loads the main purpose, then details outputs, parameters, constraints, and relations. Every sentence adds value, and the flow is logical. It is not overly concise but avoids redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 (indicated but not shown), the description covers all essential aspects: main purpose, key outputs, parameter constraints, rate limit, auth, sibling relation, and error handling. Annotations are rich, so the description is complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (ein and years). The description restates the years range and default, and provides an example EIN format, but does not add significant new meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a 5-year financial trend for US nonprofits, listing specific outputs like trend_direction, CAGR, and year-by-year trends. It distinguishes itself from the sibling nonprofit_fetch_nonprofit_full_profile by explicitly mentioning that it adds multi-year context, fulfilling the requirement of a specific verb+resource with sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (for multi-year context) and names the alternative (nonprofit_fetch_nonprofit_full_profile). It also includes a fallback instruction to call report_feedback if the response does not serve the user's need, which is excellent usage guidance.
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_profileARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| ein | Yes | EIN in format XX-XXXXXXX e.g. 46-5734087. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_categoryARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Two-letter US state code e.g. CA. Optional. | |
| category | Yes | NTEE category e.g. education, healthcare, arts. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_nameARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Organization name to search e.g. Red Cross. Required. | |
| state | No | Two-letter US state code e.g. CA. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_detailsARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| docket_id | Yes | Docket ID e.g. EPA-HQ-OAR-2021-0668. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_noticesARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| agency | Yes | Agency name or abbreviation e.g. SEC, EPA. Required. | |
| keyword | No | Optional topic filter e.g. cryptocurrency. Optional. | |
| date_from | No | Earliest publication date ISO 8601 e.g. 2024-01-31. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_rulemakingsARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| agency | No | Agency abbreviation e.g. FTC, FDA, SEC. Optional. | |
| status | No | Filter: open, closed, or all. Default open. Optional. | open |
| keyword | Yes | Topic keywords e.g. artificial intelligence. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_feedbackBRead-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")
| Name | Required | Description | Default |
|---|---|---|---|
| signal | Yes | One of incorrect_data, missing_field, stale_data, not_useful, wrong_entity, or data_quality. Required for user_feedback. | |
| comment | No | Description of the issue. Optional. Max 500 characters. | |
| tool_id | Yes | Tool identifier, e.g. T04 or security_fetch_cve_detail. Required. | |
| query_hash | Yes | Hash from the response being reported — found in the query_hash field of any response. Required. | |
| feedback_type | No | user_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_query | No | What the agent was trying to accomplish — used when feedback_type=agent_gap. Optional. Max 256 chars. | |
| missing_fields | No | List of field names that are absent or wrong. Optional. | |
| gap_description | No | What was missing or wrong in the result — used when feedback_type=agent_gap. Optional. Max 256 chars. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
report_mcpize_linkARead-onlyIdempotent
Check MCPize subscription status for a DataNexus tool.
tool_id: DataNexus tool identifier e.g. "T10". Pass the tool the user is asking about.
Returns: status ("free" | "subscription_required" | "not_configured"), message, tool_id, and upgrade_url when subscription is required.
Example: report_mcpize_link(tool_id="T10")
| Name | Required | Description | Default |
|---|---|---|---|
| tool_id | Yes | DataNexus tool identifier to check, e.g. "T01", "T07", "T10" — pass the ID of the tool the user is asking about. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral details beyond the annotations, listing the return values (status, message, tool_id, upgrade_url) and including an example call. This supplements the readOnlyHint and idempotentHint annotations well, though it could further clarify edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of three short lines that front-load the main purpose, then succinctly describe the parameter and return values. Every sentence serves a clear function with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and an existing output schema (implied but not provided), the description is largely complete. It explains the purpose, parameter usage, and return fields, and includes an example. It does not cover error handling or corner cases, but given the simplicity, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage (100%) for the single parameter 'tool_id' with a detailed description. The description repeats this information almost verbatim, adding no new semantic insight beyond the schema. Thus a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly and specifically states the tool's function: 'Check MCPize subscription status for a DataNexus tool.' It uses a precise verb-resource pair and distinguishes the tool from its many siblings (none of which perform this check).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool by stating 'Pass the tool the user is asking about,' implying it should be used when a user inquires about a specific tool's subscription. It does not, however, explicitly list alternatives or counter-indications, which would elevate the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_datanexus_toolsARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 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 | No | Restrict results to one sub-server: nonprofit, security, compliance, domain, legal, govcon, or regulatory. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_compatibilityARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| packages | No | List of {name, ecosystem} dicts to check compatibility. Optional. | |
| spdx_ids | No | List of SPDX licence identifiers to check compatibility. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_continuousADestructive
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}".
| Name | Required | Description | Default |
|---|---|---|---|
| sbom | Yes | CycloneDX or SPDX SBOM as JSON string. Required for register action. | |
| action | Yes | Action: register, check, or deregister the SBOM watch. Required. | |
| watch_id | Yes | Unique watch identifier for this SBOM watch. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_policyARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| sbom | Yes | CycloneDX or SPDX SBOM as JSON string. Required. 500 KB max. | |
| policy | No | Policy dict with block/warn/allow arrays of SPDX licence IDs. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_vulnerabilitiesARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| sbom_json | Yes | CycloneDX or SPDX SBOM as JSON string. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_typosquattingARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| ecosystem | Yes | Package ecosystem: npm, pypi, cargo, go. Required. | |
| package_name | Yes | Package name e.g. requests. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_kevARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes | CVE identifier e.g. CVE-2021-44228. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_detailARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes | CVE identifier e.g. CVE-2021-44228. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_epssARead-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")
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes | CVE identifier e.g. CVE-2021-44228. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_summaryARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes | CVE identifier e.g. CVE-2021-44228. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_watchADestructive
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}".
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: create, check, or delete the watchlist. Required. | |
| cve_ids | Yes | List of CVE IDs to watch e.g. ['CVE-2021-44228']. Required for create. | |
| watch_id | Yes | Unique watch identifier to create, check, or delete. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_statusARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| watch_ids | Yes | List of watch IDs to check e.g. ['watch-1','watch-2']. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_graphARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | Package name e.g. requests. Required. | |
| version | Yes | Package version e.g. 2.28.0. Required. | |
| ecosystem | Yes | Package ecosystem: npm, pypi, cargo, go, maven, nuget. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_analysisARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| spdx_id | Yes | SPDX licence identifier e.g. MIT, Apache-2.0, GPL-3.0. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_licenceARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | Package name e.g. requests. Required. | |
| version | Yes | Package version e.g. 2.28.0. Required. | |
| ecosystem | Yes | Package ecosystem: npm, pypi, cargo, go, maven, nuget. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_historyARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| ecosystem | Yes | Package ecosystem: npm, pypi, cargo, go. Required. | |
| package_name | Yes | Package name e.g. requests. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_briefARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Package version e.g. 2.28.0. Required. | |
| ecosystem | Yes | Package ecosystem: npm, pypi, cargo, go, maven. Required. | |
| package_name | Yes | Package name e.g. requests. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_vulnerabilitiesARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| package | No | Package name e.g. requests. Required in single-package mode. | |
| version | No | Package version e.g. 2.28.0. Required in single-package mode. | |
| packages | No | Batch list of {name, version, ecosystem} objects. Max 50. | |
| ecosystem | No | Package ecosystem: npm, pypi, cargo, go, maven, nuget. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_outputARead-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}".
| Name | Required | Description | Default |
|---|---|---|---|
| tool_id | Yes | DataNexus tool identifier, e.g. T04, T10, T22 — found in the tool_id field of any response. Required. | |
| query_hash | Yes | Hash from the response being validated — found in the query_hash field of any response. Enables feedback correlation. Required. | |
| response_json | Yes | The full tool response, serialised as a JSON string, to validate for data quality issues. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
Related MCP Connectors
ProPublica Nonprofit MCP — ProPublica Nonprofit Explorer API (free, no auth)
MCP server for nonprofit financials via ProPublica — IRS Form 990 data for 1.8M+ nonprofits.
75 MCP tools: SEC financials, FRED economics, IRS 990, FDA, FX, UK Companies House.
Search verified-open US grants (federal, state, foundation). Read-only MCP for AI agents.
Related MCP Servers
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server that provides web search capabilities through DuckDuckGo, with additional features for content fetching and parsing.21,444MIT
- AlicenseAqualityDmaintenanceAn 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 capabilities5259125GPL 3.0

Brave Search MCP Serverofficial
AlicenseAqualityAmaintenanceAn MCP implementation that integrates the Brave Search API, providing comprehensive search capabilities including web, local business, image, video, news searches, and AI-powered summarization.815,8531,409MIT- AlicenseAqualityAmaintenanceProvides 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.3396117AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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