DataNexus MCP
Server Details
Public data intelligence for AI agents — CVE, compliance, patents, contracts, domains.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 55 of 55 tools scored. Lowest: 3.6/5.
Tools are grouped into clear domain prefixes (compliance, domain, frontend_security, etc.) with distinct purposes. Minor overlap exists between frontend_security_detect_typosquatting and security_detect_typosquatting, but descriptions clarify the different scope.
Most tools follow a consistent verb_noun pattern with snake_case. Irregularities like 'fetch' vs 'audit' and two 'detect_typosquatting' tools exist, but overall naming is predictable within domains.
55 tools is high for a single server given the breadth of domains. Some redundancy (e.g., two typosquatting tools) suggests possible trimming, but the count is justified by the wide coverage.
The tool surface covers key operations across domains like compliance, domain, security, legal, and nonprofit. Minor gaps exist, such as limited frontend audit beyond package.json and no general-purpose code scanning.
Available Tools
55 toolsapikeys_generate_api_keyAInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (all false), the description adds critical behavioral details: rate limit (3 keys per IP per 24 hours), the need to pass the key as X-Api-Key header, and a warning that the key is shown only once. This fully informs the agent.
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 three sentences, each adding essential information: purpose, usage/limits, rate limit. No wordiness. Front-loaded with key 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 simple nature of the tool (1 parameter, has output schema), the description covers generation, limits, key usage, and rate limiting. It is complete for the agent to select and invoke 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 single parameter 'email' is described in the schema. The description adds that the email is 'used for delivery and repeat-signup lookup,' which provides context beyond the schema's basic description. Coverage is 100%, so baseline is 3; the added context justifies 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 'Generate a DataNexus API key for the given email address,' which specifies the verb, resource, and context. This distinguishes 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?
The description provides context on usage limits (10 free lookups/week for anonymous, 100/week for registered) and important storage instructions. However, it does not explicitly state when not to use the tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apikeys_revoke_api_keyADestructiveIdempotentInspect
⚠️ 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and non-read-only behavior. The description adds value by detailing immediate effect and irreversibility, and explicitly warns about human confirmation. 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 extremely concise with three compact sentences plus a warning icon, front-loaded with the destructive alert. Every sentence provides essential information with no waste.
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 one parameter and an output schema present, the description covers the core effect and safety warning. It could optionally mention error handling, but the output schema likely covers return values.
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 well-described parameter (key format dnx_...). The description does not add significant new meaning 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 states the tool permanently revokes an API key, using strong verbs like 'revoke' and 'stop working immediately'. It is distinct from siblings like generate 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?
The description includes a clear warning about requiring human confirmation in automated pipelines, implying it should not be called unsupervised. It also suggests generating a new key if access is needed again, providing context about after-effects. However, it does not explicitly mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apikeys_rotate_api_keyADestructiveInspect
⚠️ 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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Reinforces annotations with clear warning ('DESTRUCTIVE') and adds critical behavior: 'store it immediately' and 'requires human confirmation'. 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?
Two sentences, front-loaded with critical warning, no wasted words. 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?
Covers the essential: what it does, destructive warning, key storage instruction, and authentication method. Output schema exists, so return value info is 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% and the single parameter 'current_key' is well-described in the schema. The description adds minimal extra meaning beyond the schema, only noting key format and header.
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' with specific verb and resource. It distinguishes from sibling tools apikeys_generate_api_key and apikeys_revoke_api_key by combining both actions.
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 need for human confirmation. Mentions passing keys via header. Does not explicitly contrast with alternatives but the context of rotation vs. revoke/generate is implied.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint; description confirms no side effects, idempotent, and adds US-only, 24-hour cache, fuzzy name matching, and return fields. Significantly supplements annotation 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 dense and front-loaded with purpose. Each sentence provides essential information, though it could be slightly more concise. Still very 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 low complexity (1 param, annotations present, output schema implied), description covers all necessary context: return fields, caveats (fuzzy match, cache), and fallback instruction for reporting 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 description coverage is 100%, but description adds examples (Acme Corp or 13-1234567) and clarifies fuzzy matching, adding value beyond schema's minimal 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 states the tool checks if an entity is on the US federal exclusions list, using specific verbs and resources. It distinguishes itself from sibling tool 'govcon_search_contract_awards' by mentioning the alternative.
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 to use before awarding federal contracts/grants, and to use 'govcon_search_contract_awards' instead for contract search. Provides clear when-to-use and when-not.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description reinforces these with 'Read-only. No side effects. Idempotent.' and adds further behavioral context such as 'US only', '24-hour cache', and 'Verified source: FINRA BrokerCheck.' There is 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 fairly long but well-structured and front-loaded with the main purpose. It includes necessary details but could be slightly more concise. However, the organization is clear and every sentence adds value, so it earns a 4.
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, the description appropriately summarizes return values ('Returns registration status, qualifications, disclosure history, and employment history'). It covers all necessary aspects: purpose, limitations (no name lookup), source, caching, and fallback. For a simple one-parameter tool, this is 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?
The schema has 100% coverage for the single parameter crd_number, so baseline is 3. The description adds value by explaining what a CRD number is ('Central Registration Depository number as a string of digits e.g. 1234567'), reinforcing that it's required, and clarifying that name lookup is not supported. This extra context justifies a higher score.
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 FINRA BrokerCheck registration for a US broker or investment adviser by CRD number.' It uses a specific verb (fetch) and resource (FINRA BrokerCheck registration), and distinguishes itself from sibling tools like compliance_search_npi_by_name by specifying it's for financial advisers, not healthcare providers.
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 guidance: 'Use this when you have the CRD number.' It also states when not to use it ('name lookup is not supported') and directs users to an alternative tool for healthcare providers. Additionally, it includes a fallback instruction 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.
compliance_fetch_npi_providerARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds 'Read-only. No side effects. Idempotent. US only.', plus a 24-hour cache and verified source, providing extra 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?
The description is well-structured and front-loaded with purpose and usage guidelines. Every sentence provides value, though the feedback instruction at the end is a bit verbose but still useful. No redundant 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?
Given the tool's simplicity (one parameter, output schema exists), the description covers purpose, behavioral traits, parameter guidance, alternative tool, source, cache, and fallback feedback. It is complete and leaves no gaps for an AI 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?
The schema already has 100% coverage with description for npi_number. The description adds an example and clarifies 'Do not include dashes or spaces', which adds slight 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'), resource ('NPI registration details'), and scope ('for a US healthcare provider by NPI number'). It distinguishes from the sibling tool compliance_search_npi_by_name, which is used when only the provider name is available.
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 exact 10-digit NPI') and when not to (use compliance_search_npi_by_name for name-based queries). Also provides formatting rules (no dashes/spaces) and indicates the parameter is required.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds 'Read-only', 'No side effects', 'Idempotent', 'US only', 'Returns up to 10 matches', return fields, source (NPPES NPI Registry), and 24-hour cache. All consistent with annotations which already indicate read-only, open-world, idempotent, and non-destructive.
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 and well-structured. Front-loaded with key action and filters, then safety, usage guidance, return details, source, caching, and a feedback fallback. No redundant sentences.
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?
Comprehensive: describes purpose, filters, safety, return structure, source, caching, and includes a feedback mechanism for missing results. Fully sufficient for agent decision-making.
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 descriptions already cover all three parameters (name, state, speciality) with proper details. Description does not add significant new semantic information beyond what the schema 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?
Clearly states the tool searches the NPPES NPI Registry by provider name with optional filters. Distinguishes from sibling 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?
Explicitly guides when to use this tool (when NPI number not available) and when to use the alternative (when exact NPI known). Also notes optional state and specialty filters.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description extensively elaborates on behavior beyond annotations: it uses live DNS via Cloudflare DoH with no cache, explains scoring details for SPF, DMARC, DKIM, and describes parallel checking of 10 selectors. This gives full transparency on how results are derived.
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 a front-loaded purpose, followed by parameter and return format, then detailed scoring explanations. Every sentence adds value, and it is appropriately sized for the complexity.
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, the description complements it by explaining the scoring logic and DNS source. It covers all necessary aspects for an agent to invoke the tool correctly and interpret results.
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% and the description merely repeats the same information ('domain: Domain without protocol'). It adds no additional meaning beyond the schema, so 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 checks SPF, DMARC, and DKIM email authentication for a domain. It uses specific verbs ('Check') and resource ('domain's email authentication'), and effectively distinguishes from sibling tools like domain_fetch_dns_records by focusing on email security.
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 context for when to use the tool (to assess a domain's email security posture) but does not explicitly mention when not to use it or suggest alternatives. The focus is strong, but lacks exclusion criteria.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description reinforces these but adds non-obvious behavior: 'Verified source: Cloudflare DoH. 4-hour cache' and 'Returns all matching records currently in effect.' This provides useful context beyond the structured annotations, though it does repeat some annotation content.
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 front-loaded with the core action, then adds parameter details, usage guidance, source, cache, and a feedback fallback. While it redundantly restates annotation hints ('Read-only. No side effects. Idempotent.'), the additional clauses earn their place by covering valid values, usage alternatives, and data freshness.
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 rich annotations, output schema, and simple parameters, the description covers all necessary guidance: what it returns, when to use it, alternatives, valid inputs, and cache behavior. The only minor gap is potential error cases, but these are adequately handled by the 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?
The schema's record_types property says 'Optional' while the required array includes it; the description resolves this by explicitly marking both domain and record_types as Required and enumerating the valid record types (A, AAAA, MX, TXT, NS, CNAME, SOA) with an example. This meaningfully adds value beyond the schema, which lacks enums and misstates optionality.
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 opens with a clear specific action: 'Fetch current DNS records for a domain via Cloudflare DNS over HTTPS.' It distinguishes this tool from sibling domain_fetch_domain_rdap by explicitly stating it's for DNS records, not registration metadata, leaving no ambiguity about the tool's role.
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 'Use this when you need live DNS resolution' and then directs to domain_fetch_domain_rdap for registration metadata. It also adds context about the source and cache (4-hour cache), helping the agent decide whether freshness is acceptable.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reiterates the annotations (readOnlyHint, idempotentHint) with 'Read-only. No side effects. Idempotent.' and adds additional context: '4-hour cache' and 'Verified source: crt.sh'. This adds value 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 moderately long but each sentence adds value: purpose, idempotency, parameter format, use case, alternative, source, cache, and feedback instruction. It is front-loaded with the primary action. Could be slightly more concise but 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?
Given the presence of an output schema, the description does not need to detail return values. It covers purpose, usage guidelines, parameter semantics, behavioral traits, and even includes a feedback fallback. The tool is a simple read-only data fetch, and the description is fully 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?
The input schema already has 100% coverage with a clear description for the 'domain' parameter. The description repeats this information but does not add new meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Fetch'), resource ('historical SSL certificate issuance'), and source ('Certificate Transparency logs'). It also distinguishes from the sibling tool 'domain_fetch_ssl_certificate_chain' by specifying the use case for historical data versus current chain.
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 ('detect domain hijacking or audit unexpected historical certificate issuance') and explicitly names the alternative tool for current certificate needs ('domain_fetch_ssl_certificate_chain').
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description reinforces these ('Read-only. No side effects. Idempotent.') and adds cache duration (4-hour cache) and data source (IANA RDAP), providing useful 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?
The description is well-structured with clear sections but contains some redundancy (e.g., repeating annotations). It is front-loaded with the primary purpose and remains concise 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?
Given the single parameter, strong annotations, explicit usage guidelines, output schema existence, and a fallback feedback instruction, the description is fully 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% and the description repeats the parameter format ('domain without protocol'). It adds minor clarity ('not https://example.com') but does not significantly enhance the schema information.
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 domain registration details via IANA RDAP and lists the returned fields (registrar, dates, nameservers, registrant info). It distinguishes from sibling tools like domain_fetch_ssl_certificate_chain and 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?
Explicitly states when to use ('when you need registration metadata') and provides alternatives for certificate history and DNS resolution. Also includes a feedback mechanism for cases where the response is insufficient.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description reinforces these with 'Read-only. No side effects. Idempotent.' and adds extra behavioral info: daily quota, source (HackerTarget API), 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 and front-loaded with the main purpose. It includes necessary details without redundancy. Every sentence adds value, covering purpose, constraints, use cases, quota, source, and fallback. It is slightly long but still concise for the information provided.
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 one required parameter, annotations, and an output schema (implied), the description covers all key aspects: purpose, input format, constraints, caching, quota, source, and a fallback mechanism. It is complete and leaves no obvious gaps for an AI agent to 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?
The input schema has one parameter with a description. The description adds value by explaining that if a domain is given, it is first resolved to its IPv4 A record, and that IPv6-only domains are not supported. This goes beyond the schema's basic 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 states the tool's purpose: 'Find domains co-hosted on the same IP address (reverse IP lookup).' This is a specific verb ('find') and resource. It distinguishes well from sibling tools like domain_fetch_dns_records and domain_fetch_domain_history.
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 context for when to use the tool ('identifying shared hosting risk and mapping corporate infrastructure'). It also notes constraints (IPv6 not supported) and includes a fallback instruction to call report_feedback if needed. However, it does not explicitly state when not to use or compare with alternative tools.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description reiterates annotations (read-only, no side effects, idempotent) and adds constraints like no IP/wildcard support, verified source (crt.sh), 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?
Every sentence adds value; no fluff. Clear hierarchy: purpose, parameter, usage, alternative, fallback. Well-structured within a single paragraph.
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, parameter constraints, usage guidance, caching, source verification, return value summary, and fallback agent gap reporting. Output schema exists so return value description 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 has 100% coverage with one parameter described. Description adds constraint that domain must not include protocol and explicitly says 'Required.' plus 'Does not support IP addresses or wildcard domains,' which 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?
Description clearly states verb 'Fetch' and resource 'SSL certificate history for a domain from Certificate Transparency logs'. It distinguishes from sibling tool 'domain_fetch_domain_rdap' 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 states when to use ('detect unexpected certificate issuance or audit certificate history') and when not to use ('use domain_fetch_domain_rdap for registration data'). Also provides source and cache info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_fetch_subdomainsARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond annotations by detailing caching (24h cache, performance timelines), circuit breaker behavior, fallback sources, and the response source field. Annotations already declare readOnlyHint and idempotentHint, and the description reinforces these 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 somewhat lengthy but justifiably so given the complex behavior (sources, caching, circuit breaker, feedback). It is well-structured: first sentence conveys the core purpose, followed by parameter details, source information, caching behavior, and error handling. Every sentence serves a purpose, 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 (not shown), the description does not need to detail return values. It covers all essential aspects: purpose, parameters, sources, caching, circuit breaker, and feedback mechanism. No gaps are apparent for a subdomain enumeration 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?
There is only one parameter 'domain' with a schema description that covers its meaning and required state. The description repeats this information and provides an example. Since schema coverage is 100%, the description adds marginal value beyond the schema, earning a baseline score of 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 clearly states the tool enumerates subdomains for a domain via Certificate Transparency logs. The verb 'enumerate' and resource 'subdomains' are specific. It distinguishes from sibling tools like domain_fetch_dns_records by focusing solely on subdomains.
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 context on when to use this tool (to get subdomains) and includes details on sources, caching, and fallback behavior. It also directs users to call report_feedback if the response is insufficient. However, it does not explicitly state when not to use it or compare to alternatives, which is acceptable given the sibling list.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description reinforces 'Read-only. No side effects. Idempotent.' and adds important nuance: ${{ secrets.FOO }} and ${{ env.FOO }} are NOT flagged, only literal secrets. Also mentions 500 KB limit. 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 moderately sized but packs essential info. Front-loaded with main action and key details. A few sentences could be streamlined, but no unnecessary words. 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 tool complexity (multiple config types, output with risk_level and findings), description covers key behaviors, limitations, and output fields. Mentions the feedback mechanism for gaps. Has output schema, so return values are covered. Edge cases like not flagging template references are addressed.
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 3. Description adds meaning: config is raw YAML/TOML content, config_type enumeration details (github_actions with full check suite, others secrets only in Sprint 8). Also notes 500 KB max and default value. This enriches 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 scans CI configs for exposed secrets, missing lockfile enforcement, and unpinned dependencies, specifying supported platforms (GitHub Actions, Vercel, Netlify). This distinct verb-resource combination differentiates it from siblings like frontend_security_audit_manifest.
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: paste config content, no filesystem access. Provides a NOTE on what is not flagged and a fallback to report_feedback if the result doesn't serve. This includes exclusions and alternative actions.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description reinforces these with 'Read-only. No side effects. Idempotent.' and adds detailed behavioral context: data sources (OSV.dev, deps.dev, npm registry), verdict criteria, and fallback. 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 appropriately sized. It front-loads the purpose and distinction, then covers parameters, verdict criteria, sources, safety, and fallback. Every sentence adds value 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 complexity (audits a full package.json, returns a verdict with multiple criteria, has optional lockfile), the description is complete. It covers purpose, parameters, criteria, data sources, side effects, and fallback. The output schema exists but is not needed for completeness as the verdict logic is described.
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%, with both parameters described. The description adds meaningful detail: manifest is required with 500 KB max, lockfile is optional and affects whether pinned versions or semver ranges are audited. This goes beyond the schema's short 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 audits a frontend package.json for security risks, returning a SHIP/CAUTION/BLOCK verdict with licence risks and abandonment signals. It distinguishes itself from the sibling security_fetch_package_vulnerabilities by noting it takes the full package.json instead of a single package.
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 vs alternatives (e.g., different from security_fetch_package_vulnerabilities). Also provides guidance on optional lockfile parameter: audits pinned versions if provided, otherwise semver ranges. Includes a fallback instruction to report feedback if the result doesn't serve 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.
frontend_security_detect_typosquattingARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds algorithmic detail (Damerau-Levenshtein distance ≤ 2) and return fields, confirming no side effects and idempotence. It does not contradict 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 efficiently covers purpose, differentiation, algorithm, return, behavior, and a feedback fallback. It is not overly verbose, though could be slightly more streamlined.
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 with 2 parameters and high schema coverage, the description is complete: it explains purpose, usage, algorithm, output, behavior, and even includes error handling via feedback. Minor omission of error scenarios but overall 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%, with both parameters described. The description reiterates the purpose of each parameter but adds no new 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's purpose: 'Typosquatting detection optimised for the top 500 frontend packages'. It lists exemplar packages and distinguishes itself from the sibling tool 'security_detect_typosquatting' by specifying it is for frontend packages and has fewer false positives.
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 says when to use: for frontend packages, and when not to: for backend packages use 'security_detect_typosquatting' instead. This provides clear guidance and alternative.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds value by stating 'Read-only. No side effects. Idempotent.' and listing sources (OSV.dev, deps.dev, npm registry). It also explains the wrapping behavior. 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 comprehensive but not overly verbose; it front-loads the purpose and provides essential details. It loses a point for being slightly lengthy but remains well-structured and informative.
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 existence, annotations, and the description covering purpose, parameters, usage guidelines, behavioral traits, sources, and fallback behavior, the description is fully complete. It enables an agent to understand when to use, how to use, and what to expect.
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 meaning: package_name is described as 'npm package name. Required.' and version is described as 'Optional pinned version — latest resolved if omitted,' which clarifies behavior beyond the schema's 'Package version e.g. 2.28.0. Optional.'
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: providing a SHIP/CAUTION/BLOCK risk brief for npm packages with frontend-specific context, differentiating it from the wrapped security_fetch_package_risk_brief. It specifies the added signals (weekly_downloads, is_ui_component) and explicitly mentions it is restricted to npm.
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 tells when to use this tool (for npm packages) and when not to ('Use security_fetch_package_risk_brief for non-npm ecosystems'). It also provides a fallback mechanism: calling report_feedback if the response does not serve 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.
govcon_fetch_open_solicitationsARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive. Description adds 'No side effects', 'Idempotent', cache behavior (4-hour), and data source, providing rich 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?
The description is a single paragraph but covers all necessary aspects efficiently. Some repetition (e.g., 'Mandatory' in description of keyword) but overall well-structured and compact.
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, rich annotations, and output schema present, the description is fully complete: it explains purpose, usage, parameters, return fields, source, cache, and error 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 already has 100% coverage with descriptions. Description adds encoding guidance for keyword, default values for optional params, and explains expected date range behavior (implied from 'currently open').
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 fetches open solicitations with a keyword, and explicitly distinguishes it from the sibling tool for historical awards, 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?
Provides explicit when-to-use ('active bid opportunities') and when-not-to-use (use govcon_search_contract_awards for historical awards). Also includes 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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description reinforces these with 'Read-only. No side effects. Idempotent.' and adds further details: fuzzy matching, cache duration, 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?
The description is comprehensive but not overly verbose. It front-loads the core purpose and groups information logically (purpose, safety, parameters, usage, source, cache, fallback). A slightly tighter structure could remove redundancy, but it remains effective.
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?
Despite having an output schema (not shown), the description lists key return fields. It covers safety, parameters, usage, alternatives, source, cache, and even error handling via report_feedback. For a two-parameter tool with rich annotations, this is fully 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 description coverage is 100% (both parameters have descriptions). The description adds value by noting 'Fuzzy match used' for vendor_name, which goes beyond the schema. With high baseline, the addition earns a score above 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 states the tool fetches 'complete federal contract award history for a specific vendor' — a specific verb and resource. It distinguishes from the sibling tool 'govcon_search_contract_awards' by specifying when to use each, ensuring 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 tells when to use ('when researching a specific company's government contracting history') and when not to use ('use govcon_search_contract_awards instead when exploring a topic area without a specific vendor'). 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.
govcon_search_contract_awardsARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly and non-destructive. Description adds cache duration (4 hours), data source (USASpending.gov + SAM.gov), and return fields. Some behavioral details like pagination or max results are missing.
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-organized with a summary sentence, parameter list, return info, sibling guidance, and source details. No redundant text.
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 rich annotations and output schema, the description covers purpose, parameters, return content, data source, caching, and comparisons to siblings. It is fully 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%, so baseline is 3. The description repeats parameter descriptions and adds an example, but does not introduce new 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?
Clearly states the tool searches government contract awards with keyword, agency, and date range filters. The example and sibling differentiations reinforce the specific verb and resource.
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 alternatives: govcon_fetch_vendor_contract_history for vendor-specific queries and govcon_fetch_open_solicitations for active bids. This leaves no ambiguity.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. Description adds fuzzy match disclaimer, data source, cache duration, and expected result fields, which are valuable 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 relatively long but well-structured with clear sections (purpose, params, usage, source, feedback). Front-loads key info. Could tighten slightly but 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?
Covers all important aspects: fuzzy matching, result fields, data source, cache, alternative tool, feedback mechanism. No gaps given the tool's moderate complexity and presence of 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%. Description adds examples (e.g., inventor_name: 'Smith or John Smith'), clarifies fuzzy matching implications, and explains assignee optionality. Adds 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 patent portfolio for a named inventor with optional assignee filter. Distinguishes from sibling legal_search_patents_by_keyword by specifying topic vs. inventor focus.
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 (researching inventor or company portfolio) and when not (use legal_search_patents_by_keyword for topics). Includes feedback mechanism for gaps.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds further context: 'Read-only. No side effects. Idempotent', '24-hour cache', 'Verified source: EPO OPS', and normalisation behavior. 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 ~150 words and well-structured: purpose, behavior, parameter details, return summary, usage contrast, source, caching, feedback. While slightly verbose, every sentence adds value and there is no redundancy. Could be trimmed slightly, but very effective.
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 (not detailed but listed fields), the description covers return values (title, abstract, etc.), parameter constraints, caching policy, and a fallback feedback mechanism. For a tool with 2 parameters and clear purpose, this is highly 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 description coverage is 100%, but the description adds significant value: explains EPODOC format, provides concrete examples for each jurisdiction, clarifies optionality and default of 'jurisdiction', and states that passing mismatched jurisdiction is valid due to normalisation.
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: fetch full patent details by patent number and jurisdiction. It uses a specific verb ('fetch') and resource ('patent details'), and explicitly distinguishes itself from the sibling tool 'legal_search_patents_by_keyword' by stating 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?
The description provides explicit usage guidance: 'Use this when you have a specific patent number. Use legal_search_patents_by_keyword instead when you only have keywords.' It also explains parameter behavior (automatic normalisation) and provides 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.
legal_fetch_patent_citationsARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds: 'Read-only. No side effects. Idempotent.' Also discloses normalization behavior, cache duration (24-hour), and data source (EPO OPS).
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 information-dense but slightly verbose with multiple examples and normalization explanation. However, it is well-structured with core purpose first, then parameter details, usage guidance, and fallback instructions.
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 still explains return value structure: 'citing patents (forward citations) and cited patents (backward citations) with filing dates and titles.' Also covers error handling via report_feedback and data freshness.
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?
With 100% schema coverage, description adds significant detail: EPODOC format examples for patent_number, default for jurisdiction, and normalization rule. Explains that jurisdiction is an optional hint and that even mismatched jurisdiction works.
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 begins with a clear verb+resource: 'Fetch forward and backward citation chains for a specific patent.' It distinguishes itself from sibling tools by explicitly naming legal_search_patents_by_keyword and legal_fetch_patent_by_number as alternatives.
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 statement: 'Use this when building a prior art citation chain for a specific patent you already have.' Also states when to use the sibling tool and includes a fallback reporting mechanism.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description declares read-only behavior, no side effects, idempotency, and a limit of 10 matches. It adds context beyond annotations by specifying the limits, verified source (EPO OPS + USPTO), and 24-hour cache, which annotations do not cover.
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 behavior, then parameters, then return info, then usage guidance. Every sentence is informative, though slightly verbose with the feedback paragraph. It could be tightened but remains effective.
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?
Despite having an output schema (not shown), the description covers all essential aspects: purpose, parameters, return fields, usage context, limitations (10 matches, 24-hour cache), source verification, and a fallback feedback mechanism. It is complete for an intelligent 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?
With 100% schema description coverage, the baseline is 3. The description adds value by providing examples for keywords, clarifying options for jurisdiction (EP, US, WO), and noting the default behavior for date_from ('no lower bound'). This goes slightly 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 'Search patents by keyword across EPO, USPTO, or WIPO', specifying a specific verb and resource. It distinguishes from sibling legal_fetch_patent_by_number by noting that this tool is for keyword-based search without 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 explicitly states when to use this tool: 'Use this when finding prior art or exploring a technology landscape without a specific number.' It also provides an alternative: 'Use legal_fetch_patent_by_number instead when you have the patent number already.'
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, idempotentHint, destructiveHint. Description adds 'Read-only. No side effects. Idempotent. UK only. 24-hour cache. Verified source.' No contradiction; adds valuable behavioral 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 comprehensive but includes feedback reporting instructions that could be separated. However, it is front-loaded with the core purpose and remains 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?
With only one parameter, 100% schema coverage, output schema present, and clear description of returns, the tool definition is fully complete for its simple purpose.
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 parameter. The description adds format details: '7 digits, e.g. 1234567' and notes it can be a full/partial name, which goes 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?
Description clearly states the tool fetches UK registered charity details by charity number or organisation name. It specifies the verb 'fetch', the resource 'UK registered charity details', and the input type, distinguishing it from sibling tools for US nonprofits.
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 (for UK charities) and when not to (for US nonprofits, recommending alternative sibling tools). Also includes instruction to report feedback if the response doesn't serve 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.
nonprofit_fetch_nonprofit_by_einARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description reinforces these with explicit statements (read-only, no side effects, idempotent) and adds context (US only, 7-day cache, specific return fields, 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 informative but somewhat lengthy. However, every sentence serves a purpose (purpose, usage, behavior, params, fallback). Front-loaded with core function. Could be slightly more concise but 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?
Given the presence of an output schema (not shown but indicated) and the tool's simplicity, the description covers all necessary aspects: purpose, parameters, behavioral traits, usage guidelines, and fallback. 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 one parameter (ein) well-described in schema. The description adds value by clarifying the format (with or without dash) and providing examples, improving practical usability.
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 IRS 990 filing data for US nonprofits by EIN. It distinguishes itself from the sibling tool nonprofit_search_nonprofits_by_name, which is used when only a name is available.
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 exact EIN) and when to use an alternative (nonprofit_search_nonprofits_by_name for name-only queries). Also provides context on data source, caching, 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.
nonprofit_fetch_nonprofit_financial_trendsARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent. Description adds critical context: data source (ProPublica IRS Form 990), rate limit (30/min), no auth required, and return format (trend_direction, CAGR, etc.). 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?
Description is well-organized: purpose, returns, parameters, rate limit, auth, sibling relation, feedback fallback. Each sentence adds value, but it is slightly 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 presence of an output schema, the description provides sufficient high-level output details, data source, rate limit, auth, and feedback mechanism. It is complete for a tool of this 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 coverage is 100% with both parameters fully described. Description repeats the default for years but does not add significant 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 states it provides a 5-year financial trend for US nonprofits, listing specific outputs like revenue growth, expense ratios, etc. It distinguishes itself from the sibling tool nonprofit_fetch_nonprofit_full_profile.
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 says it complements nonprofit_fetch_nonprofit_full_profile for multi-year context, and includes a feedback fallback if the tool doesn't serve the need. It does not explicitly state when not to use, but gives clear context.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description adds: 'Data refreshed on each call', rate limit of 30/minute, no auth required, and lists output fields. 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?
Front-loaded with purpose and key details. Slightly verbose with the report_feedback instruction, but every sentence 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?
Given rich output schema and annotations, the description covers purpose, usage, behavior, parameters, and error handling. 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%; the description adds only the example EIN format (already in schema). No additional 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?
The description clearly states the tool's purpose: 'Complete nonprofit due diligence in one call' and lists specific outputs like revenue trends, executive pay, risk flags, and health score. It distinguishes from siblings by implying 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 identifies target users (grant-makers, investors, compliance teams) and provides a recovery mechanism via report_feedback. It does not explicitly state when not to use this tool versus alternatives, 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.
nonprofit_search_nonprofits_by_categoryARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds valuable behavioral context: rate limit (30/min), no auth required, returns up to 25 results, uses ProPublica API, and specifies returned data (revenue, assets, health scores). This exceeds annotation coverage.
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 details, then usage guidance. It is longer than minimal but every sentence adds value, including the feedback fallback. Could be slightly more concise but is efficient given 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 2 parameters, an output schema, and clear annotations, the description is comprehensive. It covers purpose, parameters (with mapping), limits, data returned, external API, rate limits, and usage flow. No significant gaps are present.
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 significant value by explaining that category maps to NTEE codes, listing example categories, and noting that raw NTEE letters (A-Z) are also accepted. This clarifies the parameter 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 tool's purpose: 'Search US nonprofits by mission category and state.' It specifies the resource (US nonprofits), action (search), and filters (category, state). It also distinguishes itself from siblings by positioning itself as a starting point for due diligence, with a follow-up tool mentioned (nonprofit_fetch_nonprofit_full_profile).
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 context for when to use this tool ('starting point for nonprofit due diligence') and explicitly recommends a follow-up tool for deep dives. However, it does not explicitly state when NOT to use this tool, such as when a direct EIN lookup is needed (handled by sibling 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_nameARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds 'No side effects', 'US only', 'Returns up to 25 matches', '7-day cache', and 'Verified source: IRS EO BMF', providing rich behavioral 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?
The description is well-structured, starting with purpose, then parameter details, usage guidance, and fallback instruction. However, it is slightly verbose due to repetition of annotation-provided traits like 'Read-only. No side effects. Idempotent.' and inclusion of a feedback mechanism that could be separate.
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 search tool, the description covers all relevant behavioral aspects: idempotency, caching, source, output fields, limits, and alternatives. The output schema exists, so return values are not needed in description. Complete for the 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% with descriptions for both parameters. The description adds clarity by stating 'Full or partial organisation name' for name and 'Optional, defaults to all states' for state, which are not explicit 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 verb (search), resource (nonprofits), and scope (US by name with optional state filter). It distinguishes from sibling tools like fetch_nonprofit_by_ein and search_nonprofits_by_category 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 states when to use this tool (when you have a name but not EIN) and when to use the alternative (fetch_nonprofit_by_ein). Also provides context on idempotency, US-only, limit of 25 matches, and 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.
regulatory_fetch_docket_detailsARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. The description adds valuable context: 'Read-only. No side effects. Idempotent. US federal only. Timeout is 30 seconds — large dockets may be slow. Verified source: Regulations.gov + Federal Register fallback. 4-hour cache.' This goes 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 efficient, front-loading the purpose, then providing usage guidance, parameter details, behavioral notes, and a fallback instruction. Every sentence adds value 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 complexity (fetching docket details) and the richness of annotations and output schema, the description completes the picture by listing returned fields, caching behavior, timeout, and source reliability. No gaps remain.
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 sole parameter 'docket_id' is fully described in the schema (100% coverage). The description adds formatting examples (e.g., 'EPA-HQ-OAR-2021-0317') that help the agent construct valid values, but the schema already provides a basic 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 starts with 'Fetch full details for a specific regulatory docket by ID,' clearly stating the verb (fetch) and resource (regulatory docket). It differentiates from sibling tools like regulatory_search_open_rulemakings and regulatory_fetch_federal_register_notices 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 states when to use this tool ('when you have a docket ID from a search') and when to use the alternative ('Use regulatory_search_open_rulemakings instead when you need to find dockets by topic first'). Also instructs to call report_feedback if the response doesn't serve 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.
regulatory_fetch_federal_register_noticesARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds 'Read-only. No side effects. Idempotent. US federal only. 4-hour cache' and even includes a fallback feedback mechanism for when the tool doesn't serve the user's need, providing rich behavioral 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?
The description is sufficiently detailed but not excessively long. It front-loads the purpose and then provides parameter details, usage guidance, and additional context. Every sentence adds value, though it could be slightly more concise by consolidating some redundancies.
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 (1 required), has output schema (return fields listed), multiple siblings, the description covers all needed aspects: parameter defaults, caching behavior, source verification, fallback feedback, and alternative tool references. 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%, so baseline is 3. Description adds examples for each parameter (e.g., 'SEC', 'cryptocurrency', '2024-01-31') and specifies defaults ('defaults to all notices', 'defaults to last 90 days'), which provides practical meaning 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?
Clearly states 'Fetch recent Federal Register notices and rules for a specific agency.' Explicitly distinguishes from sibling tool 'regulatory_search_open_rulemakings' by specifying when to use that alternative. The verb 'fetch' and resource 'Federal Register notices' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this to monitor recent regulatory activity for an agency. Use regulatory_search_open_rulemakings instead when filtering by topic across all agencies.' Also notes US federal only, verified source, and 4-hour cache, giving agents clear context for appropriate use.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint. The description adds 'Read-only. No side effects. Idempotent. US federal only.' and '4-hour cache' and 'Verified source'. 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 well-structured with front-loaded purpose but is slightly verbose due to embedded parameter descriptions and feedback instructions. However, it earns its length by packing necessary detail.
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 (search with parameters, output schema exists), the description fully addresses purpose, usage, parameters, return values, caching, source verification, and even error handling via report_feedback.
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 adds valuable context: examples for keyword, agency abbreviations, defaults, and status options. It also describes return fields, exceeding what the schema 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 tool searches open rulemakings and public comment periods on Regulations.gov and the Federal Register. It explicitly notes read-only, idempotent, and US federal scope, distinguishing it from siblings like regulatory_fetch_docket_details.
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 this when monitoring regulatory activity on a topic' and points to alternative regulatory_fetch_docket_details when a docket ID is available. It also includes a fallback to call report_feedback if the response doesn't serve 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.
report_feedbackARead-onlyInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a write operation ('Report'), but annotations set readOnlyHint=true, suggesting no side effects. This is a contradiction as submitting feedback likely involves data storage. The description does not clarify this inconsistency or disclose the actual behavioral impact.
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 verbose but well-structured with clear sections and examples. It front-loads the purpose and then details each parameter. A slightly more compact presentation could improve readability, but it remains effective.
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 availability of a detailed input schema and output schema (inferred from context), the description fully complements these with usage context, parameter details, and constraints. It leaves no significant gaps for an agent to misinterpret.
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?
With 100% schema coverage, the baseline is 3, but the description adds significant value by explaining parameter usage, providing examples, stating character limits, and clarifying when to use optional fields like intended_query and gap_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 states the tool's purpose: reporting data quality issues or agent intent gaps for DataNexus tool responses. It uses a specific verb ('Report') and identifies the resource ('data quality issue or agent intent gap'), distinguishing it from sibling tools that primarily fetch data or generate API keys.
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, including when to set feedback_type to 'agent_gap' versus 'user_feedback'. It also includes an example of a typical call, helping the agent understand usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_mcpize_linkARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds further behavioral context by detailing the return values (status, message, tool_id, upgrade_url) and provides an example call, which is well beyond what annotations offer.
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 four sentences, front-loaded with the main purpose. Each sentence adds value: purpose, parameter explanation, return details, and example. There is no fluff or 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 (one parameter, read-only check), the presence of an output schema, and clear annotations, the description fully covers what an agent needs to know. It explains what the tool does, what input to provide, and what to expect in return.
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 the parameter with 100% description coverage, so baseline is 3. The description adds an example and reiterates the parameter's purpose, which provides marginal additional value but does not significantly enhance 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 starts with 'Check MCPize subscription status for a DataNexus tool,' which uses a specific verb and resource. None of the sibling tools are related to subscription status, so it is well-distinguished.
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 clearly states the required parameter and how to use it ('Pass the tool the user is asking about'). However, it does not explicitly mention when not to use this tool or list alternatives, which would be helpful but is not critical given its unique purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_datanexus_toolsARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it reduces context from 40000 to 800 tokens, returns matching tool names and parameter hints, and explicitly states it is read-only and has no side effects. Annotations already indicate readOnlyHint and idempotentHint, but the description enriches understanding of operational impact.
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 efficiently structured: it starts with the tool's core purpose, then states safety (read-only), then usage instructions, parameter details, and finally constraints and fallback actions. Every sentence contributes unique information 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 tool's meta-purpose and the presence of an output schema, the description covers all necessary aspects: what it returns, how it reduces context, when to use it, restrictions on recursion/validation, and a clear path for failure cases. It leaves no ambiguity for the agent to invoke it 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 description coverage is 100% for both parameters. The description provides added value by restating the query parameter with concrete examples like 'check if a Python package has CVEs' and clarifying the domain parameter's optional nature and allowed values. This goes beyond the schema's minimal descriptions, aiding the agent in formulating queries.
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: finding the right DataNexus tool by describing a task in plain English. It distinctly positions itself as a meta-tool for tool discovery, differentiating it from its many sibling tools that perform specific domain tasks.
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 gives explicit when-to-use guidance: 'Call this before any other DataNexus tool to reduce context load.' It also specifies when not to use it: 'Do not call this recursively or to validate results — use validate_tool_output for that.' Additionally, it provides a fallback mechanism for unexpected results via report_feedback.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds substantial behavioral context: no network call for spdx_ids path, deps.dev resolution with max 10 concurrent, max 50 items, rate limit, and no auth. 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 well-structured: purpose first, then behavior details, constraints, target users, and fallback. It is slightly lengthy but every sentence adds value. Minor redundancy in stating 'max 10 concurrent' and 'max 50 items' could be merged, but overall 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 tool's complexity (two input modes, external dependencies, rate limits), the description covers all essential aspects: purpose, behavior, constraints, output type, and intended audience. It also provides a feedback fallback. The existence of an output schema means return details are not required.
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 enhances understanding by explaining the two input paths: packages (with ecosystem) for dynamic resolution, and spdx_ids for static lookup. It clarifies that packages require deps.dev calls while spdx_ids do not.
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: auditing licence compatibility of dependency lists. It specifies input types (package names or SPDX IDs) and output (COMPATIBLE/CONFLICT verdict). It also distinguishes from siblings by mentioning the static SPDX table and deps.dev resolution, which are unique.
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: intended for developers and compliance teams, max 50 items, rate limit 60/min, no auth. It also suggests fallback to report_feedback if needed. However, it does not explicitly contrast with other license tools like security_fetch_licence_analysis, but the niche is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_audit_sbom_continuousADestructiveInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds significant behavioral context beyond annotations: silent permanent watch, uses OSV.dev and Redis, 90-day TTL, input size limit 500 KB, rate limit 10/min, no auth required. None of this contradicts annotations; destructiveHint=true aligns with deregister action.
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 informative but somewhat lengthy; front-loads the main purpose. Could be slightly trimmed, but 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 (persistent watch, multiple actions, constraints), the description covers return signals, limitations, and use case. Output schema exists, so return format 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% with all parameters described. The description adds meaningful context: sbom is only required for register, watch_id should be unique, and actions are register/check/deregister.
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: 'Persistent SBOM watch. Register once, check anytime for new CVEs.' It specifies the verb 'watch' and distinguishes from one-time scans and license checks among siblings.
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 context: 'For DevSecOps teams monitoring production dependency exposure.' It also includes a note on calling report_feedback if inadequate. However, it does not explicitly specify when not to use this tool vs alternatives.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), the description discloses constraints (500 KB max, exact SPDX IDs only), default policy behavior, unlisted license handling (default WARN), caching (1-hour), and data source (deps.dev), providing comprehensive behavioral 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?
The description is dense but well-organized, with purpose first, then parameters, returns, alternatives, and miscellany. Every sentence adds value, though slightly verbose for the most concise possible version.
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 an output schema, the description covers all necessary aspects: input constraints, default policies, return structure, caching, source, and feedback mechanism, leaving no critical 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?
With 100% schema coverage, the description adds significant value by specifying format requirements (CycloneDX or SPDX JSON), size limit, policy default structure, exact ID requirement, and return fields, far exceeding 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 explicitly states the tool audits a CycloneDX or SPDX SBOM against a license policy and returns a PASS/WARN/BLOCK verdict, clearly differentiating it from sibling tools like security_audit_sbom_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?
The description explicitly directs users to use security_audit_sbom_vulnerabilities for CVE auditing instead, and provides a fallback procedure via report_feedback if the response is inadequate.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds non-redundant behavioral details: mentions large SBOMs may take up to 10 seconds, returns CVEs grouped by package, and a 1-hour cache. It reinforces the read-only, no-side-effects, idempotent nature 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 well-structured and mostly efficient, but slightly verbose with redundant confirmations of read-only and idempotent nature already covered by annotations. However, every sentence adds value (usage guidance, parameter details, cache info). It loses a point for minor repetition but remains effective.
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 auditing an SBOM, the description covers all key aspects: input format and requirements, performance expectations, output structure (CVEs grouped with severity and fixed versions), caching behavior, and clear alternatives. The presence of an output schema (signaled in context) further complements completeness. 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% for the single required parameter sbom_json. The description adds meaning beyond the schema: specifies accepted formats (CycloneDX or SPDX), mentions performance impact for large SBOMs, and explains the return format (CVEs grouped). This significantly aids the agent in understanding the parameter's scope and behavior.
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 starts with 'Audit a Software Bill of Materials for known vulnerabilities across all listed packages,' clearly stating the verb (audit), resource (SBOM), and scope (all packages). It distinguishes from sibling tool security_fetch_package_vulnerabilities, which checks single packages. The description also mentions the verified source and caching, adding further clarity.
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 ('when you have a full SBOM to audit') and when to use an alternative ('Use security_fetch_package_vulnerabilities instead when checking a single package version'). It also provides a fallback mechanism via report_feedback, giving complete guidance on usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_detect_typosquattingARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent, but description adds cold-start fetch time (≤30s), rate limit (60/min), no auth requirements, and storage details (PyPI/npm stats in Redis). 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?
Description is clear and well-organized, covering action, algorithm, output, infrastructure, limitations, and fallback. The feedback instruction adds length but is valuable. Could be slightly more concise by merging some sentences.
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 behavior, rate limits, auth, cold start, and intended use case. Minor gaps: does not explain behavior for packages not in top-10k or error handling for unsupported ecosystems (schema already restricts). Overall sufficient for an agent to invoke 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 has 100% coverage for both parameters (package_name and ecosystem with enum). Description does not add extra meaning to parameters beyond what the schema provides, but the overall tool operation is contextualized.
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 detects typosquatting attacks, specifies the algorithm (Damerau-Levenshtein distance ≤ 2), scope (top-10,000 packages), and output (similar_packages with scores and verdict). Distinguishes from sibling frontend_security_detect_typosquatting by targeting supply-chain security engineers.
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 target users ('security engineers auditing supply-chain package names before inclusion') and provides a feedback mechanism if the tool doesn't serve the user's need. Does not explicitly contrast with alternatives 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_cisa_kevARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description confirms these traits with 'Read-only. No side effects. Idempotent.' and adds context about the data source ('Verified source: CISA KEV catalog, updated daily, cached'). 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 efficiently packed with purpose, safety, parameters, return fields, sibling comparisons, source info, and feedback instruction. Front-loaded with core purpose, every sentence earns its place.
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 still lists return fields and explains the tool's role in the CVE triage flow. It provides complete context for a simple single-parameter tool, including fallback direction.
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 cve_id. The description reinforces the format and required nature, and provides an example (CVE-2021-44228), adding value beyond the schema alone.
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 'Check', the resource 'CISA KEV catalog', and the scope 'whether a CVE is in it'. It explicitly 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?
The description provides explicit when-to-use guidance: for checking KEV status (active exploitation). It also specifies alternatives: use security_fetch_cve_detail for full severity and security_fetch_cve_epss for exploit probability. 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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds useful context: '1-hour cache' and 'Verified source: NIST NVD', which go 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?
Well-structured, front-loaded with purpose, then details, usage, source, cache, fallback. Every sentence adds value, 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?
Covers purpose, parameter, return fields summary, source, caching behavior, and feedback mechanism. Output schema exists, so return details are adequate. 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%, baseline 3. Description adds format detail (CVE-YYYY-NNNNN) but mostly repeats schema. No significant added value 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 'Fetch full detail for a specific CVE by ID' with verb and resource. Explicitly 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?
Provides explicit when to use ('when you have a CVE ID') and when not to ('use security_fetch_package_vulnerabilities instead'). Includes a feedback fallback for mismatched needs.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds valuable behavioral details: caching interval (6-hour), data source (FIRST.org), and the specific return fields (epss and percentile), surpassing what annotations cover.
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 yet comprehensive: front-loaded purpose, then parameter, returns, thresholds, integration advice, source, cache, and an example. Every sentence adds value 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?
For a simple read-only tool with one parameter, the description covers all essential aspects: what it does, how to use it, what it returns, practical thresholds, and complementary tool recommendation. The presence of an output schema (not shown) further reduces the need for return format 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?
Schema description coverage is 100% with a brief description for cve_id. The description adds an example value and explains the return format, thresholds, and usage context, which enriches the parameter meaning beyond the schema 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 the tool fetches the EPSS exploit probability score for a CVE, predicting exploitation likelihood in the next 30 days. It distinguishes its role from sibling tools like security_fetch_cve_detail by contrasting EPSS (urgency) with CVSS (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?
The description explicitly advises combining with security_fetch_cve_detail to prioritize patching, clarifying when to use this tool. It also provides threshold-based action guidance. However, it does not explicitly exclude scenarios where this tool should not be used, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_fetch_cve_risk_summaryARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds rate limit (60/min), no auth required, explanation of UNKNOWN status, and parallel call behavior. Annotations already indicate read-only and idempotent, so description complements them well.
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?
Front-loaded with main purpose, includes usage and feedback instructions. Slightly lengthy but each sentence adds value; could be more concise but 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?
Covers purpose, behavior, usage scenario, error handling, rate limit, auth, and feedback path. With output schema present, no missing critical information for a single-parameter 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 description does not add extra parameter details beyond the schema's example. Baseline 3 is appropriate as schema carries the load.
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 combines CVSS, CISA KEV, and EPSS to return a risk verdict, with specific levels (CRITICAL_EXPLOIT, etc.). Distinguishes from siblings like security_fetch_cve_detail and security_fetch_cve_epss by being a combined summary.
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?
Specifies the tool is for security engineers triaging vulnerabilities after fetch_cve_watch fires, and provides a fallback feedback mechanism. Lacks explicit comparison to other CVE tools 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_watchADestructiveInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true), the description adds critical behavioral context: uses Redis for persistence, daily background refresh from NVD/CISA KEV/EPSS, rate limit 60/min, no auth required. 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, then details on behavior, return format, rate limit, and audience. It is informative but slightly verbose; could be trimmed while retaining 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 tool complexity (3 actions, persistence, refresh), the description fully covers lifecycle, return fields, and usage constraints. Output schema exists and is referenced. 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%, so baseline 3. The description adds meaning by explaining action types and their context (e.g., 'cve_ids required for create'), and clarifies watch_id as unique identifier, 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 tool's purpose: managing a persistent CVE watchlist with actions create, check, delete. It distinguishes from siblings like security_fetch_cve_detail by emphasizing persistence and event tracking over time.
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 ('security engineers tracking CVE exposure'), usage pattern ('Create once, check anytime'), and provides a fallback instruction to report_feedback. However, it does not explicitly compare to 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.
security_fetch_cve_watch_statusARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, etc.), the description details internal behavior: per-user cursor in Redis, first call returning 30 days, subsequent calls returning only new events, no external API calls, instant response. 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 efficiently structured, starting with the main purpose, then explaining efficiency, parameter, behavior, and sources. Every sentence adds value 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 (one parameter, output schema exists), the description thoroughly covers purpose, parameter semantics, behavior, cursor mechanism, sources, and even a fallback action. It leaves no significant 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 schema describes watch_ids with a basic example. The description adds crucial context: these are the same IDs used when creating watches with security_fetch_cve_watch. Since schema coverage is 100%, baseline is 3, but the extra linkage raises the score.
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 all specified CVE watches for new events since the last poll, uses a per-user cursor, and returns only watches with new events. It explicitly references the sibling tool security_fetch_cve_watch for creation, distinguishing their roles.
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 it is efficient for scheduling and specifies the relationship to the creation tool, implying when to use it. It also provides a fallback to report_feedback if results are insufficient. However, it does not explicitly mention when not to use it or list alternative tools beyond the implicit sibling.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), description adds 'Hard 8-second timeout — large dependency trees may return partial results', '1-hour cache', and 'Read-only. No side effects. Idempotent.'
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 and front-loaded with essential action and constraints. It is slightly verbose but every sentence adds value: purpose, parameters, usage guidance, source, cache, fallback. No redundant 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?
Given the tool's complexity (transitive dependency tree, timeout), description covers purpose, parameters, usage, constraints, source, cache, and fallback. Output schema exists but description also notes return value ('all direct and transitive dependencies with version constraints').
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 examples for package ('requests'), version ('2.28.0'), and lists ecosystem values ('One of PyPI, npm, Maven, Go, Cargo, NuGet, RubyGems'), enhancing 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?
Description clearly states 'Fetch the full dependency tree for a package version including transitive dependencies', specifying verb, resource, and scope. It distinguishes from sibling 'security_fetch_package_vulnerabilities' 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 tells when to use this tool ('understand full supply chain exposure') and when to use an alternative ('only need CVEs for a single package'). Also mentions source (deps.dev), cache duration, and fallback feedback mechanism.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, openWorld, idempotent, non-destructive. Description adds concrete behavioral details: static bundle for top-50 licences, fallback to spdx.org API, risk levels assume proprietary/commercial use, rate limit 60/min, no auth required. No contradiction with annotations; 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?
Description is informative yet compact. Front-loads core functionality, then adds details. Includes feedback fallback which is useful but slightly lengthens text. No redundant or empty sentences. Good structure for quick scanning.
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 has one required parameter, rich annotations, and an output schema (implied). Description covers all behavioral aspects: source types, fallback, audience, rate limits, auth. No gaps for a simple lookup 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?
Only one parameter (spdx_id) with schema coverage 100%. Schema description already defines it as 'SPDX licence identifier e.g. MIT, Apache-2.0, GPL-3.0. Required.' Tool description repeats examples but adds no new semantics. 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?
Describes exactly what the tool does: explains any software licence, returns obligations, permissions, limitations, risk level, and OSI/FSF status. Specifies input (SPDX identifier). Clearly distinguishes from siblings by focusing on comprehensive licence analysis rather than just fetching text or checking compatibility.
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?
States target users (security engineers, developers) and context (before including a dependency). Mentions fallback behavior and rate limit. Includes explicit guidance to call report_feedback with specific arguments if tool fails to serve the user's need. Lacks explicit comparison to sibling tools for when not to use this tool, but the purpose is clear enough.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description reinforces these by stating 'Read-only. No side effects. Idempotent.' It adds additional context: 'Verified source: deps.dev (Google). 1-hour cache.' 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?
The description is well-structured and front-loaded with purpose and parameters. It is concise but includes all necessary information. Could be slightly shorter, but still effective.
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 rich annotations and output schema, the description is complete. It covers the tool's purpose, required parameters, usage guidance, alternative, caching, source verification, and 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%, so baseline is 3. The description adds value by giving concrete examples for package and version, listing ecosystem options, and explaining the return value. This exceeds what the schema 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?
Clearly states it fetches the SPDX licence identifier for a given open source package version. Includes specific verb and resource, with examples and distinction from sibling tools like 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 tells when to use this tool (verify licence compatibility before including a dependency) and when to use an alternative (security_fetch_package_vulnerabilities for security issues). Also provides feedback instructions if 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_package_maintainer_historyARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, etc.) are already present, and the description adds useful context: 'data refreshed on each call, 1-hour cache', rate limit, and no auth. 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?
Description is about 5 sentences, front-loaded with purpose and key details. The fallback instruction is appended but not excessive. Good balance of 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?
Lists return fields (e.g., anomaly_score range, maintainer_health enum), data sources, caching, rate limits, and auth. For a tool with output schema, this provides sufficient context beyond the 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%, but the description mentions only 'npm or PyPI' while the schema includes 'cargo' and 'go', potentially causing confusion. Baseline 3 is appropriate for a schema that covers parameters, but the mismatch reduces clarity.
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 ('Analyse ownership and release history') and the goal ('detect supply-chain risk') for npm or PyPI packages, distinguishing it from sibling tools like security_fetch_package_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 targets security engineers auditing dependencies for production builds, and includes fallback guidance (report_feedback) for non-serving responses. Lacks explicit 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_package_risk_briefARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, openWorld), the description adds that data is refreshed on each call, states a rate limit of 30/minute, notes no authentication required, and lists the exact 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 compact at about four sentences, front-loaded with the main purpose. It covers key details 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 presence of an output schema, the description lists all key return fields and data sources. It provides sufficient context for an agent to understand tool behavior and output, missing only a note on how to interpret 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?
Schema coverage is 100%, so parameters are fully described. The description adds minimal extra meaning; however, it incorrectly states the version parameter as 'Required.' (schema marks it optional), causing a slight inconsistency.
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 returns a single SHIP/CAUTION/BLOCK verdict for any package, combining CVEs, license, maintainer health, and transitive count. It specifies the data sources (OSV.dev, deps.dev, PyPI, npm registry) and distinguishes itself from sibling security tools by offering a consolidated risk brief rather than individual vulnerability or license checks.
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 performing pre-inclusion package review,' providing clear context. It does not explicitly list when to avoid using the tool or suggest alternatives, but the niche is well-defined.
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-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description adds substantial behavioral context: it explicitly states 'Read-only. No side effects. Idempotent.', mentions a 1-hour cache, identifies Google OSV.dev as the source, and explains batch response semantics (partial flag, failed_count). 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 compact but information-dense. The opening sentence states the core purpose, followed by structured mode explanations. Every sentence adds value—from mode-specific behavior to return format to fallback instructions. No wasted words or tautology.
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 (dual modes, batch limits, multiple return fields) and the presence of an output schema, the description fully covers what an agent needs: mode selection, parameter semantics, result shape, and error fallback. It is self-sufficient and leaves no critical 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?
Even though schema description coverage is 100%, the description adds crucial semantic detail: it explains the relationship between single-package fields and the packages array, clarifies which fields are ignored in batch mode, and describes the batch object structure ({name, version, ecosystem}). This goes well beyond the schema's individual field 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 starts with a specific verb and resource: 'Fetch all known CVEs for an open source package version or a batch of packages.' It clearly distinguishes between single-package and batch modes, and differentiates from sibling tools like security_fetch_cve_detail and security_audit_sbom_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?
Explicit usage guidance is provided: single-package mode vs batch mode, the 50-item batch limit, and the fact that batch mode overrides single parameters. It also names specific alternatives for related needs (security_fetch_cve_detail, security_audit_sbom_vulnerabilities) and even includes a fallback instruction to call report_feedback if the tool doesn't satisfy 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.
validate_tool_outputARead-onlyIdempotentInspect
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 | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive nature. Description adds 'Never blocks' and explains the two-layer agreement condition before feedback is filed, enriching behavioral 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 slightly verbose but well-structured: starts with core purpose, then parameter details, then usage guidance. Every sentence adds value; minor redundancy could be trimmed.
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 existence, description doesn't need to detail returns but mentions key outputs (pass, issues_found, feedback auto-filed). Covers all aspects: purpose, parameters, usage context, and fallback action.
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%, and description adds inline explanations for each parameter (e.g., where to find tool_id, purpose of query_hash), surpassing the schema's own 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?
Description clearly states the tool validates DataNexus tool responses for data quality using two-layer validation. It specifies the verb 'validate' and resource 'DataNexus tool response', differentiating it from siblings like report_feedback.
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 instructs when to use this tool versus report_feedback, including a concrete alternative and guidance for handling insufficient responses. Provides clear context for choosing between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityBmaintenanceDomain and company intelligence for AI agents. Enables vetting companies, qualifying leads, and mapping targets from free public data without API keys.MIT
- AlicenseBqualityCmaintenanceQuery 20 structured datasets from AI agents — healthcare providers (9M NPI records), SEC EDGAR filings, PACER federal courts, USPTO patents and trademarks, OFAC sanctions screening, crypto whale wallets, DeFi liquidation signals, Polymarket smart money, economic indicators (FRED/BLS), federal contracts, NOAA weather, and OTC shell risk scoring. Pay per query, no subscriptions751MIT
- Alicense-qualityFmaintenanceOpen source intelligence for AI agents — GitHub project-health scoring, package dependency-risk analysis, trending repositories, license checks, and side-by-side package comparison.MIT
- AlicenseAqualityCmaintenanceStructured business intelligence for AI agents. 5.5M verified entities across 34 countries, 40.3M BORME mercantile acts, EU VAT validation, GLEIF, healthcare registries. 20 tools.61MIT