Skip to main content
Glama
dcianciulli

DefectDojo MCP Server

by dcianciulli

DefectDojo MCP Server

A Model Context Protocol (MCP) server that provides comprehensive access to DefectDojo vulnerability management platform, plus a portable Agent Skill that teaches any coding agent how to use it correctly.

Repo: dcianciulli/defectdojo-mcp-server. The server can be run straight from this repository (no clone needed).

What's in this repository

Path

Purpose

src/defectdojo_mcp/

The MCP server (78 tools, Python/FastMCP, stdio transport)

skills/defectdojo/SKILL.md

Portable Agent Skill (standard SKILL.md format) — works with Claude Code, OpenCode, Codex CLI, Cursor, Gemini CLI and any other skill-compatible harness

skills/README.md

Install & distribution guide: per-harness install paths and MCP config snippets

.claude-plugin/

Claude Code plugin + marketplace manifests (bundles skill + MCP server in one install)

tests/

Live integration tests (adapt to your instance: point DEFECTDOJO_URL at a test instance)

Skill = knowledge (procedures, workflows, tool map — plain markdown, portable everywhere). MCP server = execution (the actual tools). They are independent: install either or both. Note: a skill alone does not provision MCP servers — that stays explicit host configuration (except via the Claude Code plugin below, which bundles both with user approval).

Related MCP server: MCP Vulnerability Checker Server

Quick start

Prerequisites: uv installed; environment variables DEFECTDOJO_URL (e.g. https://your-defectdojo.example.com) and DEFECTDOJO_API_KEY (token from DefectDojo → your profile → API v2 Key).

Install the skill (Node.js; auto-detects installed agents — Claude Code, OpenCode, Codex, Cursor…):

npx skills add https://github.com/dcianciulli/defectdojo-mcp-server -g

Run the MCP server (most harnesses — Kiro, Claude Desktop, Cursor, Gemini CLI share this JSON shape):

{
  "mcpServers": {
    "defectdojo": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/dcianciulli/defectdojo-mcp-server", "defectdojo-mcp-server"],
      "env": { "DEFECTDOJO_URL": "https://your-defectdojo.example.com", "DEFECTDOJO_API_KEY": "your-token" }
    }
  }
}

Other harnesses (OpenCode, Codex CLI, Gemini CLI, Kiro) use different config files and field names: exact snippets for each are in skills/README.md.

Claude Code one-step install (skill + MCP server together, via plugin):

claude plugin marketplace add dcianciulli/defectdojo-mcp-server
claude plugin install defectdojo@defectdojo-mcp

The plugin bundles the MCP server definition (runs via uvx straight from this repo); you still need the two environment variables above set in your environment.

Features

  • Findings: search with extensive filters (severity, status, SLA, CVE, reporter…), create, update, verify, duplicates

  • Finding lifecycle: close as false positive, mitigated, or duplicate — with closure note; reopen/reactivate

  • Risk acceptance: create with mandatory expiration date (findings auto-reactivate on expiry), update, expire early, reinstate

  • Products/Assets: CRUD with filtering by organization, lifecycle, tags (v3 API: assets)

  • Engagements & Tests: full lifecycle, notes

  • Scan Import/Reimport: results from 180+ scanners

  • Notes & metadata: add/remove finding notes, note types, metadata

  • Organizations, Users, Endpoints/Locations, JIRA integration, System administration (settings, Celery, SLA, notifications)

Finding lifecycle & risk acceptance (the important part)

Closing a finding requires a reason — use the dedicated tool, never raw status flips:

Reason

Tool

Not a real vulnerability

close_finding_false_positive(finding_id, note) (+ out_of_scope=true if applicable)

Vulnerability remediated

close_finding_mitigated(finding_id, note)

Duplicate of another finding

close_finding_duplicate(finding_id, duplicate_of)

Undo any closure with reopen_finding.

Risk acceptance is deliberately discouraged in favor of fixing: accept_risk requires a future expiration_date (rejected otherwise), an accepted_by and a justification; findings are reactivated automatically when the acceptance expires (reactivate_expired=true by default). Manage acceptances with update_risk_acceptance, expire_risk_acceptance, reinstate_risk_acceptance.

When asked to work on a project, resolve it by asset name first (list_products(name=…)); ask the user when ambiguous; use the organization only as a secondary hint. The bundled skill enforces all of this — installing it is recommended.

Available tools (78)

Findings (8)

list_findings · get_finding · create_finding · update_finding · verify_finding · delete_finding · get_finding_duplicates · reset_finding_duplicate_status

Finding lifecycle (5)

close_finding (generic, closure_type: false_positive / mitigated / duplicate) · close_finding_false_positive · close_finding_mitigated · close_finding_duplicate · reopen_finding

Risk acceptance (9)

accept_risk (expiration mandatory) · accept_risks_vulnerability (bulk by CVE) · list_risk_acceptances · get_risk_acceptance · create_risk_acceptance · update_risk_acceptance · delete_risk_acceptance · expire_risk_acceptance · reinstate_risk_acceptance

Notes & metadata (6)

list_finding_notes · add_finding_note · remove_finding_note · list_note_types · list_finding_metadata · add_finding_metadata

Products/Assets (5)

list_products / get_product / create_product / update_product / delete_product

Organizations (5)

list_organizations / get_organization / create_organization / update_organization / delete_organization

Engagements (8)

list_engagements / get_engagement / create_engagement / update_engagement · close_engagement / delete_engagement · list_engagement_notes / add_engagement_note

Tests (8)

list_tests / get_test / create_test / update_test / delete_test · list_test_types · list_test_notes / add_test_note

Scan import (2)

import_scan · reimport_scan

Endpoints (3)

list_endpoints · get_endpoint · list_endpoint_status

JIRA (5)

list_jira_instances / get_jira_instance / create_jira_instance · list_jira_projects / list_jira_finding_mappings

Users (6)

list_users / get_user / get_current_user / create_user / update_user / delete_user

System (8)

get_system_settings / update_system_settings · get_celery_status / get_celery_queue_details / purge_celery_queue / purge_celery_task · list_notifications / list_sla_configurations

Configuration

Environment variables

Variable

Required

Description

DEFECTDOJO_URL

Yes

Base URL of the DefectDojo instance (e.g. https://your-defectdojo.example.com)

DEFECTDOJO_API_KEY

Yes

API token (DefectDojo → user profile → API v2 Key)

Getting your API key

  1. Log into DefectDojo

  2. Open your profile (top-right menu → API v2 Key)

  3. Copy the token value

Authentication model

The token inherits the permissions of the user who generated it; every action (closures, notes, risk acceptances) is attributed to that user in DefectDojo. Each person should use their own token — do not share tokens between team members.

Supported scan types

DefectDojo supports 180+ scan types (ZAP, Burp, Nessus, Qualys, SARIF, Trivy, Grype, SonarQube, Semgrep, Dependency Check, Snyk, AWS Security Hub/Prowler, GitLab SAST/DAST, Checkmarx, Veracode…). Run list_test_types to get the full list from your instance.

Development

git clone <repo-url> && cd defectdojo-mcp-server
uv sync                 # creates .venv from pyproject.toml + uv.lock
uv run defectdojo-mcp-server          # start server locally (stdio)
  • Requires Python >= 3.10. The mcp dependency is pinned to 1.x (FastMCP API); uv.lock is committed to keep it that way.

  • tests/test_lifecycle_live.py exercises the full lifecycle (close FP/mitigated, reopen, risk acceptance with expiration, expire) against a live DefectDojo instance — adapt the finding ID and run it only against a test finding you own (never production data).

  • After changing the code, restart the MCP connection in your harness to pick up the new tools.

License

MIT

Available Tools

78 tools
accept_riskA

Accept the risk of one or more findings (risk acceptance with mandatory expiration date).

Creates a RiskAcceptance object. The expiration date is MANDATORY: findings are reactivated automatically when it passes (unless reactivate_expired=False). Risk acceptance is discouraged in favor of fixing; always require an explicit business justification and a named approver.

Args: finding_ids: List of finding IDs to accept accepted_by: Name/email of the person accepting the risk justification: Business justification for accepting expiration_date: Mandatory expiration (ISO date "YYYY-MM-DD" or full ISO datetime). Must be in the future. decision: Risk treatment by risk owner: A=Accept, V=Avoid, M=Mitigate, F=Fix, T=Transfer decision_details: Details of the decision / compensating controls recommendation: Security team recommendation: A=Accept, V=Avoid, M=Mitigate, F=Fix, T=Transfer recommendation_details: Details of the recommendation reactivate_expired: Reactivate findings when the acceptance expires (default True) restart_sla_expired: Restart SLA when the acceptance expires (default False) owner_id: Owner user ID (defaults to the authenticated user) name: Acceptance name (defaults to "Risk acceptance ( findings)")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
decisionNo
owner_idNo
accepted_byYes
finding_idsYes
justificationYes
recommendationNo
expiration_dateYes
decision_detailsNo
reactivate_expiredNo
restart_sla_expiredNo
recommendation_detailsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses that expiration is mandatory, that findings reactivate automatically on expiry unless reactivate_expired=False, and that an explicit justification and named approver are required. It stops short of stating permission/auth requirements, keeping it from a 5.

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

Conciseness4/5

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

Front-loads the critical constraint (mandatory expiration) in the opening line. The Args block is long but justified given zero schema coverage; only minor redundancy between the prose and the parameter list.

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

Completeness4/5

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

For a 12-parameter mutation tool with no annotations but an existing output schema, the description supplies the missing behavioral and parameter context. It does not explain side effects on related findings beyond expiration or the risk of creating duplicates, leaving a small gap.

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

Parameters5/5

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

Schema coverage is 0%, and the description fully compensates: it documents all 12 parameters, decodes the decision/recommendation enum letters (A/V/M/F/T), specifies the ISO date format and future-date constraint for expiration_date, and lists defaults for reactivate_expired, restart_sla_expired, owner_id, and name.

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

Purpose4/5

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

States a specific verb and resource ('Accept the risk of one or more findings', 'Creates a RiskAcceptance object') with a scope detail. Clear on its own, but it never distinguishes itself from close siblings like create_risk_acceptance or accept_risks_vulnerability, so the agent must infer the boundary.

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

Usage Guidelines3/5

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

It offers one directional cue ('Risk acceptance is discouraged in favor of fixing'), which implies the preferred alternative is remediation. However, it names no concrete sibling tool to use instead and gives no conditions for choosing this over close_finding_mitigated or create_risk_acceptance.

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

accept_risks_vulnerabilityA

Bulk accept risk for findings matching vulnerability IDs (CVEs).

Uses the native /findings/accept_risks/ endpoint: matches findings by vulnerability_id (CVE) inside the CURRENT engagement context. Use accept_risk() instead when you need explicit finding IDs and an expiration date.

Args: vulnerability_ids: CVE or advisory IDs (e.g. ["CVE-2024-1234"]) accepted_by: Name/email of the person accepting the risk justification: Justification for accepting findings with these vulnerability IDs

ParametersJSON Schema
NameRequiredDescriptionDefault
accepted_byYes
justificationYes
vulnerability_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that this is a bulk mutation scoped to the current engagement and names the backend endpoint, which is real behavioral context. However, it says nothing about required permissions, reversibility, or whether previously accepted findings are overwritten; for a destructive bulk mutation with zero annotation coverage that leaves gaps.

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

Conciseness4/5

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

The core distinction from accept_risk() is front-loaded in the first two sentences, then the Args block documents each parameter economically. The endpoint aside is slightly redundant with the purpose sentence but overall well-structured.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. For a 3-required-param bulk mutation with no annotations, the description covers purpose, scoping, sibling routing, and parameter format, which is nearly everything needed to invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning beyond the schema by exemplifying the format ('CVE or advisory IDs, e.g. ["CVE-2024-1234"]') and clarifying that accepted_by is a name/email and justification applies to all findings matching those IDs. With no schema coverage and only three params, this is meaningful compensation, though it could say whether IDs are single or comma-separated.

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

Purpose5/5

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

The description states a specific verb+resource ('Bulk accept risk for findings matching vulnerability IDs') and explicitly names the endpoint used. It also distinguishes the tool from its sibling accept_risk() by spelling out the exact difference: matching by vulnerability_id vs explicit finding IDs.

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

Usage Guidelines5/5

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

It gives an explicit when-to-use-instead instruction: 'Use accept_risk() instead when you need explicit finding IDs and an expiration date.' It also constrains scope to the CURRENT engagement context, so the agent knows this is engagement-bounded.

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

add_engagement_noteC

Add a note to an engagement.

Args: engagement_id: The engagement ID entry: Note text content private: Whether the note is private

ParametersJSON Schema
NameRequiredDescriptionDefault
entryYes
privateNo
engagement_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about permissions required, whether notes are editable/deletable, or the effect of the private flag beyond a tautological restatement. For a mutation tool with zero annotation coverage this is a real gap.

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

Conciseness3/5

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

The description is short and front-loads the purpose, but the Args section largely duplicates what the schema already exposes, spending words without adding value. It is efficient though somewhat redundant.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but for a mutation tool with no annotations and 0% parameter coverage the description omits behavioral context (auth, defaults, editability) and any usage framing. It is inadequate for correct invocation alone.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but its Args block only restates param names: 'engagement_id: The engagement ID' and 'private: Whether the note is private' are tautologies. Only 'entry: Note text content' adds minor meaning, which is insufficient for three undocumented parameters.

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

Purpose4/5

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

The description states a specific verb and resource ('Add a note to an engagement'), making it distinguishable from siblings like add_test_note and add_finding_note by the 'engagement' target. It is clear, though it never explicitly contrasts itself with those near-identical siblings.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus add_test_note, add_finding_note, or list_engagement_notes, and no prerequisites are stated. The agent must infer the context entirely from the tool name.

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

add_finding_metadataC

Add metadata to a finding.

Args: finding_id: The finding ID name: Metadata key name value: Metadata value

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether an existing key is overwritten or duplicated, whether the change is auditable or reversible, what permissions are needed, or how the mutation affects the finding. 'Add metadata' is the only behavioral content.

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

Conciseness3/5

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

The purpose sentence is front-loaded and short, but the Args block is auto-generated filler that re-lists schema fields without adding information, which is noise rather than value.

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

Completeness2/5

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

For an un-annotated mutation tool with 0% schema description coverage, the description is inadequate: it omits key-collision behavior, permission requirements, and any pointer to list_finding_metadata for reading existing metadata. The presence of an output schema only excuses the absence of return-value documentation, not these gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only restates parameter names with generic glosses ('The finding ID', 'Metadata key name', 'Metadata value'). It adds no format, constraint, length, or uniqueness semantics — notably whether 'name' must be unique per finding. Output schema exists, so return semantics are correctly omitted.

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

Purpose4/5

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

The opening sentence names a specific verb and resource: 'Add metadata to a finding.' It is unambiguous about the operation. However, it does not differentiate from the sibling list_finding_metadata (or the broader finding-edit tools), so an agent must infer the add-vs-read split.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus list_finding_metadata, update_finding, or add_finding_note. There are no preconditions, no mention of required permissions, and no statement of when not to use it.

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

add_finding_noteB

Add a note to a finding.

Args: finding_id: The finding ID entry: Note text content private: Whether the note is private (visible only to you and superusers) note_type: Note type ID (see list_note_types)

ParametersJSON Schema
NameRequiredDescriptionDefault
entryYes
privateNo
note_typeNo
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does add real behavioral context for 'private' (visible only to you and superusers), which the schema does not convey, but it says nothing about required permissions, whether the note can later be removed or edited, or any side effects of the write.

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

Conciseness4/5

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

Front-loaded with the one-sentence purpose before the Args block, and there is no filler prose. The 'Args:' docstring scaffolding is slightly verbose but each line carries information.

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

Completeness3/5

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

An output schema exists, so return values need not be described. For a simple notes mutation the definition is serviceable, but with zero annotation coverage and no mention of permissions, sibling disambiguation, or note lifecycle, it leaves gaps an agent would want filled.

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

Parameters4/5

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

Schema description coverage is 0%, yet the docstring accounts for all four parameters. Two entries add genuine meaning beyond the schema: 'private' is explained as visibility to you and superusers, and 'note_type' is cross-referenced to list_note_types. The finding_id and entry glosses are largely restatements.

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

Purpose4/5

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

States a specific verb and resource ('Add a note to a finding'), so the action is unambiguous. It does not distinguish itself from the near-identical siblings add_test_note and add_engagement_note, so an agent must infer the scope from the name rather than the description.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus alternatives such as add_test_note, add_engagement_note, or add_finding_metadata, nor any prerequisites. The only navigational help is 'see list_note_types', which concerns a parameter rather than usage context.

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

add_test_noteC

Add a note to a test.

Args: test_id: The test ID entry: Note text content private: Whether the note is private

ParametersJSON Schema
NameRequiredDescriptionDefault
entryYes
privateNo
test_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not explain permissions required, whether notes are appended or replaced, rate limits, or the effect of the 'private' flag beyond its literal name, leaving significant behavioral gaps for a mutation tool.

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

Conciseness3/5

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

The purpose is front-loaded in one short sentence, and the args block is compact and free of filler. The Python docstring formatting ('Args:') is boilerplate rather than optimized prose, but nothing is wasted.

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

Completeness3/5

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

For a simple three-parameter mutation with an existing output schema (so return values need no explanation), the description covers the core action and params. It remains thin on permissions and side effects, but the tool's low complexity keeps this adequate rather than incomplete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it does list all three parameters with brief meanings (test_id, entry, private). The additions are minimal—'test_id: The test ID' is largely tautological—but entry and private gain some clarity not present in the bare schema.

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

Purpose4/5

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

The description states a specific verb and resource ('Add a note to a test'), which is clear and actionable. However, it does not differentiate itself from near-identical siblings such as add_finding_note or add_engagement_note, so the agent must infer which object type applies.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no mention of alternatives like list_test_notes or the finding/engagement note tools. Usage is only implied by the tool name.

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

close_engagementC

Close an engagement.

Args: engagement_id: The engagement ID to close

ParametersJSON Schema
NameRequiredDescriptionDefault
engagement_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden for a mutation. It says nothing about whether closing is reversible, what happens to associated tests/findings/notes, whether permissions are required, or whether the engagement is archived or hidden. For a state-changing operation with zero annotation coverage this is a significant gap.

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

Conciseness4/5

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

The description is two lines with no padding and the action is front-loaded. The 'Args:' block is boilerplate that partly duplicates the schema, but there is no verbose waste.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. But for a destructive-ish state-change tool with no annotations, the description supplies no behavioral context, no usage context, and no param detail—leaving the agent underinformed for correct invocation.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It only restates the parameter name ('The engagement ID to close') without adding format, source, or how to obtain a valid ID. Value beyond the schema's bare 'Engagement Id' property is essentially nil.

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

Purpose3/5

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

States a verb and resource ('Close an engagement'), which is clear at a surface level. However, it gives no indication of what 'close' actually means relative to siblings like delete_engagement or update_engagement, so the agent must infer the distinction. The semantics of the state change are left undefined.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, no preconditions, and no alternatives. An agent looking at close_engagement, delete_engagement, update_engagement, and get_engagement gets nothing telling it which to pick. The one-line description-equivalent is purely nominal.

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

close_findingA

Close a finding. Requires closure_type; use the dedicated tools below when unsure.

Prefer the semantic aliases:

  • close_finding_false_positive(finding_id, note)

  • close_finding_mitigated(finding_id, note)

  • close_finding_duplicate(finding_id, duplicate_of)

Args: finding_id: The finding ID to close closure_type: One of "false_positive", "mitigated", "duplicate" note: Optional note recorded on the finding at closure time note_type: Optional note type ID (see list_note_types) mitigated: Mitigation datetime (ISO 8601, defaults to now) out_of_scope: Mark finding as out of scope (only meaningful with closure_type="false_positive") duplicate: Mark finding as duplicate (only meaningful with closure_type="duplicate")

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
duplicateNo
mitigatedNo
note_typeNo
finding_idYes
closure_typeNomitigated
out_of_scopeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden; it does disclose the default behavior (closure_type defaults to 'mitigated', mitigated datetime defaults to now) and the semantics of the out_of_scope and duplicate flags. It does not mention permissions, side effects such as notifications, or reversibility (the sibling reopen_finding hints closure is not final), so it falls short of full disclosure.

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

Conciseness5/5

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

Front-loaded one-line purpose followed by routing guidance and an Args block; every sentence adds information, no filler or restatement of the tool name.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and the description covers parameters, defaults, and alternatives well. The remaining gap is behavioral context for a mutation (permissions, side effects, whether reopening is possible), which leaves it just short of complete.

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

Parameters5/5

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

Schema description coverage is 0% and 7 parameters are present, so the description must compensate — and it does, documenting every parameter: finding_id, closure_type with its enum values, note, note_type (with a pointer to list_note_types), mitigated (ISO 8601 + default), and the two conditional booleans.

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

Purpose5/5

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

States a specific verb and resource ('Close a finding') and immediately distinguishes itself from the close_finding_false_positive / _mitigated / _duplicate siblings by declaring a preference for them when the caller is unsure.

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

Usage Guidelines5/5

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

Explicitly names the three alternative tools, gives their signatures, and states the condition under which each should be used instead ('use the dedicated tools below when unsure', 'Prefer the semantic aliases'). No inference is required to route correctly.

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

close_finding_duplicateC

Close a finding as duplicate of another finding.

Args: finding_id: The finding ID to close duplicate_of: The ID of the original (canonical) finding note: Optional note

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
finding_idYes
duplicate_ofYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It doesn't state that closing is a mutating operation that deletes or supersedes the finding, whether it requires permissions, whether the action is reversible, or how duplicates are resolved. The Args block only restates parameter names.

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

Conciseness3/5

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

The first sentence is front-loaded and efficient, but the Args block is largely duplicative of the JSON schema and adds little value, inflating the description without earning its place.

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

Completeness2/5

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

An output schema exists, so return values needn't be explained, but for a mutation tool with no annotations and 0% schema coverage, the description should cover state requirements, permissions, and side effects. As written, it is too thin for the operation's complexity.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It defines finding_id, duplicate_of, and note at a basic level, but doesn't explain accepted formats (e.g., whether finding IDs come from list_findings), semantics of 'original (canonical) finding', or note usage constraints. The restatement of the schema parameter names with no added semantic detail leaves the agent guessing about validity and constraints.

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

Purpose5/5

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

States a specific verb+resource+operation: closes a finding as a duplicate of another. The sibling set contains close_finding, close_finding_false_positive, close_finding_mitigated and reset_finding_duplicate_status, but the description is specific enough that an agent can route to it without ambiguity.

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

Usage Guidelines2/5

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

The description implies the purpose but gives no guidance on when to use this tool vs. the sibling closures or vs. get_finding_duplicates. Nothing states prerequisites, prerequisite finding states, or when the operation is inappropriate.

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

close_finding_false_positiveB

Close a finding as a false positive (and optionally out of scope).

Args: finding_id: The finding ID to close note: Why this is a false positive (recommended) note_type: Optional note type ID (see list_note_types) out_of_scope: Also mark the finding as out of scope

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
note_typeNo
finding_idYes
out_of_scopeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose that this is a mutating, state-changing operation on a finding, whether it is reversible (reopen_finding exists but is not referenced), or what permissions/effects apply. A mutation tool with zero annotation coverage needs far more disclosure.

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

Conciseness4/5

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

The one-line purpose is front-loaded and followed by a compact Args list with no wasted sentences. The 'recommended' hint on note and the cross-reference on note_type are efficient and earned.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the four parameters are addressed at a high level. But for a destructive/mutating close operation with no annotations and no schema descriptions, the description omits reversibility, side effects, and when to prefer sibling close variants, leaving meaningful gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it partially does: it explains note as 'Why this is a false positive', points note_type to list_note_types, and clarifies out_of_scope. However, finding_id is only restated ('The finding ID to close') with no guidance on where to obtain it, and the note_type cross-reference is helpful but thin.

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

Purpose5/5

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

States a specific verb and resource ('Close a finding as a false positive') and names the exact disposition, which cleanly distinguishes it from siblings like close_finding_duplicate and close_finding_mitigated. An agent can discriminate between the close_finding_* variants without opening any schema.

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

Usage Guidelines3/5

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

The description implies when to use it (a finding determined to be a false positive) but never states when not to use it or routes the agent to the sibling close tools for other dispositions. The '(and optionally out of scope)' clause hints at a secondary behavior but does not say when that should be set.

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

close_finding_mitigatedA

Close a finding because the vulnerability was remediated (fix applied).

Args: finding_id: The finding ID to close note: How/where it was fixed (recommended) note_type: Optional note type ID (see list_note_types) mitigated: Mitigation datetime (ISO 8601, defaults to now server-side)

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
mitigatedNo
note_typeNo
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose useful traits: 'mitigated' defaults to now server-side, 'note' is recommended, and note_type points to list_note_types. However it says nothing about permissions or reversibility (reopen_finding exists as a sibling), leaving meaningful gaps for a mutation tool.

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

Conciseness4/5

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

Purpose sentence is front-loaded and every parameter entry earns its place. The Args block is slightly verbose but standard and non-redundant.

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

Completeness4/5

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

An output schema exists so return values need not be explained. For a mutation tool with no annotations, the definition documents every parameter, defaults, and a cross-reference, which is nearly sufficient; only permission and reversibility context is missing.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does document all four parameters with meaning: finding_id, note (how/where fixed, recommended), note_type (ID, cross-referencing list_note_types), and mitigated (ISO 8601, server-side default). The cross-reference and default behavior add real value beyond the bare schema.

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

Purpose4/5

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

States a specific verb+resource ('Close a finding') and names the reason ('because the vulnerability was remediated (fix applied)'), which implicitly distinguishes it from close_finding_duplicate and close_finding_false_positive. It stops short of explicitly routing the agent away from those siblings.

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

Usage Guidelines3/5

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

The reason clause ('remediated/fix applied') implies the correct scenario for this tool versus other close_* variants, but there is no explicit when-to-use or when-not-to-use guidance and no named alternatives. Usage is only implied.

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

create_engagementC

Create a new engagement.

Args: name: Engagement name product_id: Product ID this engagement belongs to target_start: Target start date (YYYY-MM-DD) target_end: Target end date (YYYY-MM-DD) engagement_type: Type (Interactive or CI/CD) status: Status (Not Started, In Progress, Completed) description: Description lead_id: Lead user ID build_id: Build identifier commit_hash: Commit hash branch_tag: Branch or tag name source_code_management_uri: SCM URI deduplication_on_engagement: Dedupe scoped to engagement tags: List of tags

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
tagsNo
statusNoIn Progress
lead_idNo
build_idNo
branch_tagNo
product_idYes
target_endYes
commit_hashNo
descriptionNo
target_startYes
engagement_typeNoInteractive
source_code_management_uriNo
deduplication_on_engagementNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It doesn't mention permissions required, whether the operation is idempotent, what happens on duplicate names, or what the response contains. The parameter list gives some idea of what can be set, but there's no behavioral context beyond that. An output schema exists but the description doesn't reference it.

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

Conciseness3/5

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

The description is front-loaded with the main purpose, followed by a parameter list. The parameter explanations are minimal, and some are redundant. It's not overly verbose, but the structure is just a flat list without grouping or emphasis on required vs optional. Every line does serve to document a parameter, but the overall conciseness is undermined by low information density in the parameter descriptions.

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

Completeness2/5

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

Given a 14-parameter creation tool with no annotations, 0% schema description coverage, and an output schema, the description is incomplete. It doesn't explain required vs optional parameters (though the schema does), doesn't mention permissions, doesn't describe the return value (though output schema exists), and doesn't guide on usage context. For a mutation tool with this complexity, the description should do more to inform safe and correct invocation.

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

Parameters3/5

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

Schema description coverage is 0% – the input schema only has parameter titles with no descriptions. The description does list each parameter with a brief explanation (e.g., 'target_start: Target start date (YYYY-MM-DD)'), which adds meaning beyond the schema, especially the date format. However, many explanations are tautological (e.g., 'description: Description', 'lead_id: Lead user ID') and don't fully compensate for the lack of enum details (engagement_type, status values are mentioned but not constrained) or format specifics for other fields.

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

Purpose4/5

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

The description states a clear verb+resource: 'Create a new engagement.' This is specific and unambiguous, and the sibling set contains create/update/delete/list/get engagement tools. However, it doesn't distinguish this tool from siblings like update_engagement or create_test beyond the verb, which it does sufficiently for a create operation.

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

Usage Guidelines1/5

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

The description provides no when-to-use guidance whatsoever. It doesn't say when to create an engagement versus importing scans (which may auto-create engagements), nor does it state prerequisites like requiring a product to exist first. There are no alternatives mentioned despite siblings like import_scan and reimport_scan that might create engagements implicitly.

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

create_findingC

Create a new finding.

Args: title: Finding title severity: Severity level (Critical, High, Medium, Low, Info) test_id: ID of the test this finding belongs to description: Detailed description mitigation: Recommended mitigation impact: Impact description steps_to_reproduce: Steps to reproduce references: External references cwe: CWE identifier number active: Whether finding is active (default True) verified: Whether finding is verified (default False) numerical_severity: Numeric severity (S0-S4) line: Source code line number file_path: Source file path component_name: Affected component component_version: Component version static_finding: Is static analysis finding dynamic_finding: Is dynamic analysis finding tags: List of tags

ParametersJSON Schema
NameRequiredDescriptionDefault
cweNo
lineNo
tagsNo
titleYes
activeNo
impactNo
test_idYes
severityYes
verifiedNo
file_pathNo
mitigationNo
referencesNo
descriptionNo
component_nameNo
static_findingNo
dynamic_findingNo
component_versionNo
numerical_severityNo
steps_to_reproduceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it largely falls short. It confirms the mutation ('Create') but says nothing about permissions required, whether the call is idempotent, what happens on duplicate titles, or any rate/side-effect considerations; the only behavioral hints (active defaults True, verified defaults False) are already present as schema defaults.

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

Conciseness3/5

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

The one-line purpose is front-loaded correctly, but the body is a raw Args dump rather than curated guidance. Most lines add no information beyond the parameter name, so the block is longer than its informational value warrants.

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

Completeness3/5

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

With 19 parameters, no annotations, and an output schema (so return values need not be explained), the description should at least cover invocation context and key parameter semantics. It nominally touches every parameter, which is the minimum, but leaves the agent without usage context or relationship to sibling finding tools.

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

Parameters3/5

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

Schema description coverage is 0% across 19 parameters, so the description must compensate, and it only partially does. It usefully supplies the severity vocabulary (Critical, High, Medium, Low, Info) and the numerical_severity scale (S0-S4), which the schema lacks as enums, but most other entries are bare restatements of the property name ('component_name: Affected component', 'cwe: CWE identifier number').

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

Purpose4/5

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

The opening sentence 'Create a new finding' gives a specific verb and resource, so the operation is immediately identifiable. However, it offers no differentiation from the many sibling tools that also act on findings (update_finding, get_finding, list_findings, delete_finding), so an agent gets no help routing between them beyond the verb.

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

Usage Guidelines2/5

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

The description says nothing about when to use this tool versus update_finding, import_scan, or the various close_finding_* tools. There is no statement of prerequisites, such as the fact that test_id must reference an existing test, nor any exclusion guidance.

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

create_jira_instanceB

Create a new JIRA instance configuration.

Args: url: JIRA instance URL username: JIRA username password: JIRA API token or password default_issue_type: Default issue type for new issues epic_name_id: Custom field ID for epic name open_status_key: Transition ID for opening issues close_status_key: Transition ID for closing issues info_mapping_severity: JIRA priority for Info severity low_mapping_severity: JIRA priority for Low severity medium_mapping_severity: JIRA priority for Medium severity high_mapping_severity: JIRA priority for High severity critical_mapping_severity: JIRA priority for Critical severity

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
passwordYes
usernameYes
epic_name_idNo
open_status_keyNo
close_status_keyNo
default_issue_typeNoBug
low_mapping_severityNoLow
high_mapping_severityNoHigh
info_mapping_severityNoLowest
medium_mapping_severityNoMedium
critical_mapping_severityNoHighest

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden for a creation/mutation tool. It does not disclose whether credentials are stored, whether the tool validates a live JIRA connection, what side effects occur, or what permissions are needed. Only the parameter list adds any substance, which is semantic rather than behavioral.

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

Conciseness4/5

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

The purpose statement is front-loaded in a single line, followed by a clean Args block. Given the 0% schema coverage, enumerating the parameters earns its place. It is slightly list-heavy but wastes no words.

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

Completeness3/5

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

An output schema exists, so return values need not be described. For a 12-parameter mutation tool with no annotations, the parameter documentation is adequate but the description omits prerequisites, auth expectations, and side-effect behavior, leaving meaningful gaps.

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

Parameters4/5

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

With 0% schema description coverage, the description must compensate and largely does: it explains all 12 parameters, including non-obvious ones like epic_name_id ('Custom field ID for epic name'), open/close_status_key ('Transition ID'), and the severity-to-priority mappings. It adds real meaning beyond the bare schema titles, though it omits format details (e.g., expected URL format, integer ID ranges).

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

Purpose4/5

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

The description opens with a clear specific verb and resource: 'Create a new JIRA instance configuration.' An agent can distinguish this from read siblings like get_jira_instance and list_jira_instances. However, it does not explicitly name or contrast with those siblings, so it earns a 4 rather than 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites (e.g., required JIRA server access or admin permissions), and no mention of alternatives such as get_jira_instance or list_jira_instances. The description simply asserts what the tool does without helping the agent decide when to select it.

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

create_organizationC

Create a new organization (product type).

Args: name: Organization name description: Description critical_product: Is critical product flag key_product: Is key product flag

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo
key_productNo
critical_productNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only implies a creation/mutation. It says nothing about required permissions, uniqueness or duplicate-name behavior, side effects, or error conditions for a write operation.

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

Conciseness3/5

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

The lead sentence is front-loaded and the description is short. The Args block largely duplicates the input schema titles, adding bulk with little value, but it is not egregiously long.

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

Completeness2/5

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

An output schema exists so return values need not be described. But for a creation tool with no annotations and 0% parameter coverage, the description omits auth requirements, duplicate handling, and field meaning, leaving the definition under-specified.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It lists the four parameters but only restates their titles ('name: Organization name', 'description: Description', 'critical_product: Is critical product flag'), adding no real semantics such as what 'critical product' or 'key product' actually mean.

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

Purpose3/5

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

States a specific verb+resource ('Create a new organization'), which is clear enough on its own. However, the parenthetical '(product type)' is ambiguous and, rather than distinguishing this tool from the sibling create_product, it muddies the relationship between the two. No sibling differentiation is provided.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance, no prerequisites, and no mention of alternatives such as create_product or update_organization. The agent is left to infer the context entirely from the tool name.

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

create_productC

Create a new product (asset).

Args: name: Product name organization_id: Organization (product type) ID description: Product description lifecycle: Lifecycle stage (construction, production, retirement) platform: Platform (web service, desktop, iot, mobile, web) origin: Origin (third party library, purchased, contractor, internal, open source, outsourced) business_criticality: Business criticality (very high, high, medium, low, very low, none) external_audience: Has external audience internet_accessible: Is internet accessible tags: List of tags

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
tagsNo
originNo
platformNo
lifecycleNo
descriptionNo
organization_idYes
external_audienceNo
internet_accessibleNo
business_criticalityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It implies a write operation, but doesn't disclose permission requirements, whether the created product is immediately usable, what side effects occur, or what the response contains (though output schema exists). For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

Reasonably concise and front-loaded. The parameter list is structured and readable, though the format (Args: name: ...) is somewhat raw. It doesn't waste words but could be slightly tighter.

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

Completeness3/5

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

Given the tool has an output schema, the description needn't explain return values. It covers all parameters, which is good. However, for a create tool with no annotations, it lacks important context: whether an organization must exist, permission requirements, and any constraints. It's minimally adequate but incomplete for a mutation tool of this complexity.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It helpfully enumerates all 10 parameters with brief explanations and, crucially, provides allowed values for lifecycle, platform, origin, and business_criticality, which are plain strings in the schema (no enums). This adds real meaning beyond the schema. However, the descriptions are terse and don't fully document required/optional status or formats.

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

Purpose4/5

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

States a clear verb+resource: 'Create a new product (asset)'. This distinguishes it from siblings like update_product, delete_product, and list_products. However, it doesn't clarify the relationship between 'product' and the security/scanner domain context established by other sibling tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives. There's no mention of prerequisites (e.g., an existing organization), or when a product should be created. Nothing tells the agent when this is the appropriate action.

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

create_risk_acceptanceA

Create a new risk acceptance (low-level: prefer accept_risk, which enforces expiration).

Args: name: Risk acceptance name owner_id: Owner user ID accepted_findings: List of finding IDs to accept recommendation: Security recommendation code (A, V, M, F, T) recommendation_details: Details about the recommendation decision: Risk treatment decision code (A, V, M, F, T) decision_details: Details about the decision / compensating controls expiration_date: Expiration date (YYYY-MM-DD or ISO datetime; mandatory in accept_risk) accepted_by: Name/email of the person accepting the risk reactivate_expired: Reactivate findings when the acceptance expires (default True) restart_sla_expired: Restart SLA when the acceptance expires (default False)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
decisionNo
owner_idYes
accepted_byNo
recommendationNo
expiration_dateNo
decision_detailsNo
accepted_findingsYes
reactivate_expiredNo
restart_sla_expiredNo
recommendation_detailsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose key traits beyond the schema: this is a low-level operation, accept_risk enforces expiration, and reactivate_expired/restart_sla_expired control what happens to findings when an acceptance expires. However, it omits permissions required, side effects on the accepted findings, failure modes, and reversibility.

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

Conciseness4/5

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

The purpose and alternative-tool guidance are front-loaded, and the remaining content is an efficient Args list where each line earns its place. The description is dense but appropriately sized for an 11-parameter tool with zero schema descriptions.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. For a complex creation tool with 11 undocumented parameters and no annotations, the description covers purpose, alternative, and all parameters well. It still lacks behavioral coverage around permissions and side effects, which is the main remaining gap.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It documents all 11 parameters with meaningful semantics: what each field represents, valid recommendation/decision codes (A, V, M, F, T), expiration date format, default values for the boolean flags, and which field is mandatory in the recommended alternative.

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

Purpose5/5

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

The first sentence states a specific verb and resource: 'Create a new risk acceptance.' The parenthetical immediately distinguishes it from the sibling accept_risk by noting this tool is 'low-level' and that accept_risk enforces expiration, so an agent can route correctly without opening the schema.

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

Usage Guidelines4/5

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

The description explicitly says to prefer accept_risk because it enforces expiration, giving a clear condition for choosing the alternative. It does not mention the other sibling accept_risks_vulnerability, nor does it spell out precisely when this low-level tool should be used instead (e.g., only when bypassing automatic expiration is required).

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

create_testC

Create a new test.

Args: engagement_id: Engagement ID this test belongs to test_type_id: Test type ID target_start: Target start datetime (YYYY-MM-DD or ISO format) target_end: Target end datetime title: Test title description: Test description lead_id: Lead user ID environment_id: Environment ID version: Version string branch_tag: Branch or tag build_id: Build identifier commit_hash: Commit hash tags: List of tags

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleNo
lead_idNo
versionNo
build_idNo
branch_tagNo
target_endYes
commit_hashNo
descriptionNo
target_startYes
test_type_idYes
engagement_idYes
environment_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond 'Create'. It does not mention permissions required, whether the test is created in an active state, why an engagement_id is needed, or any side effects. For a 13-parameter mutation with zero annotation coverage this is a significant gap.

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

Conciseness4/5

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

The one-line purpose is front-loaded and the Args list is compact and scannable with no filler prose. The listing is mechanical rather than economized, but nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be documented. What remains missing is the mutation context an agent needs before calling a create tool: required-vs-optional distinction is left to the schema, and permissions/state effects are absent. Adequate as a parameter glossary, incomplete as a tool description.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and listing every parameter is a genuine step up from the bare schema. The compensation is shallow, though: entries like 'Test type ID', 'Build identifier', and 'Commit hash' are near-tautological, and only target_start adds real meaning with the '(YYYY-MM-DD or ISO format)' hint. It gives the parameter vocabulary but not identifiers, sources, or constraints.

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

Purpose4/5

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

The description states a specific verb+resource ('Create a new test'), so an agent immediately knows what the tool does and can distinguish it from update_test/delete_test in the sibling list. However, it makes no effort to differentiate from adjacent create_* tools beyond the resource name, so it stays one notch below top marks.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives (e.g., create_finding or import_scan), no prerequisites such as needing an existing engagement or test type, and no note about which fields are mandatory. The Args block lists what can be passed, not when or why.

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

create_userC

Create a new user.

Args: username: Username first_name: First name last_name: Last name email: Email address is_active: Active status is_superuser: Superuser status

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
usernameYes
is_activeNo
last_nameNo
first_nameNo
is_superuserNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state required permissions, whether the user is immediately active, any validation rules, or side effects. For a write operation creating an identity record, this leaves critical behavioral context undisclosed.

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

Conciseness3/5

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

The first line is appropriately front-loaded and concise. The Args block adds length without value since each line is a tautology of the parameter name. Not excessively long, but the structure wastes lines on redundant labels.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. However, with no annotations, 0% schema coverage, and a purely tautological Args block, the description is insufficient for a six-parameter creation tool. It is barely adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description is the only documentation. The Args section merely restates the parameter names as human-readable labels ('Username', 'Email address') without adding any semantic detail like format, constraints, or defaults. One required parameter is not called out.

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

Purpose4/5

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

States a specific verb and resource ('Create a new user'), which is unambiguous against siblings like create_organization or create_product. It does not explicitly differentiate from update_user or delete_user, but the verb itself does that work.

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

Usage Guidelines2/5

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

No guidance on when to use this versus update_user or other creation tools, and no prerequisites mentioned. The description simply names the operation without any routing context, leaving the agent to infer usage from the name alone.

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

delete_engagementC

Delete an engagement.

Args: engagement_id: The engagement ID to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
engagement_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it adds nothing beyond the word 'delete'. It does not disclose irreversibility, whether attached tests/findings are cascaded or orphaned, or required permissions — significant gaps for a destructive operation.

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

Conciseness4/5

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

The text is short and the purpose sentence is front-loaded, which is good. The 'Args:' block is redundant boilerplate that restates the single obvious parameter rather than earning its space.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but for a destructive tool with zero annotations the description should at minimum cover cascade behavior, irreversibility, or preconditions. None of that is present.

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

Parameters3/5

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

Schema description coverage is 0%, but there is only one parameter and its name is self-explanatory; the description restates it as 'the engagement ID to delete' without adding format or sourcing details. This is adequate but adds no meaning beyond the schema title.

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

Purpose4/5

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

The description states a specific verb (delete) and resource (engagement), which is unambiguous on its own. It does not, however, differentiate itself from the many other delete_* siblings (delete_organization, delete_product, delete_finding, delete_test), so an agent gets no help choosing among them from the text alone.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or prerequisite guidance. Nothing states whether the engagement must be closed or empty first, or that findings/tests inside it may be affected, which matters given the sibling close_engagement and reopen-style tools.

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

delete_findingC

Delete a finding.

Args: finding_id: The finding ID to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, and it says nothing about irreversibility, cascade effects (notes, metadata), or required permissions. 'Delete' implies a destructive write, but no consequences or safety information is disclosed.

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

Conciseness4/5

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

The description is short and front-loads the purpose in a single sentence. The 'Args:' block is boilerplate that restates the schema, but overall there is no wasted prose.

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

Completeness2/5

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

Even with an output schema covering return values, a destructive tool with zero annotations needs to explain consequences, reversibility, and prerequisites. The description omits all behavioral context, leaving the agent under-informed before an irreversible deletion.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter 'finding_id' already has the title 'Finding Id', so the description's 'The finding ID to delete' adds essentially no new meaning. At minimum it could state the expected ID format or where the ID comes from.

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

Purpose4/5

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

States a specific verb and resource ('Delete a finding'), which is unambiguous on its own. However, it offers no differentiation from the many sibling mutation/close tools (e.g. close_finding, close_finding_duplicate, delete_test), so an agent cannot self-route on the description alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as closing, accepting risk, or marking a false positive, all of which are relevant siblings. The description only says what the tool does, never when to reach for it over another tool.

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

delete_organizationC

Delete an organization.

Args: organization_id: The organization ID to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it does almost nothing. It does not state whether deletion is irreversible, whether it cascades to child resources (products, engagements, findings), or what permissions are required — all critical for a destructive tool.

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

Conciseness4/5

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

The description is short and front-loaded, with the operation stated in the first sentence. The Args block is boilerplate but not bloated.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but for a destructive, annotation-free tool the description omits the information an agent most needs: irreversibility, cascade scope, and authorization requirements.

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

Parameters2/5

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

Schema description coverage is 0% for the single parameter, and the description only restates the name ('The organization ID to delete') without adding type, format, or sourcing information. It does not compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource ('Delete an organization'), which is unambiguous. However, it makes no attempt to differentiate itself from sibling destructive tools like delete_user, delete_product, or delete_engagement, leaving the agent to infer the distinction from the name alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. For a destructive operation sharing a namespace with create_organization, update_organization, and get_organization, the agent gets no help deciding when deletion is the correct action versus update or deactivation.

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

delete_productC

Delete a product.

Args: product_id: The product ID to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Delete' signals a destructive mutation, but the description says nothing about irreversibility, required permissions, or whether deleting a product cascades to child resources such as engagements and findings — the most important risk for a destructive tool in this hierarchy.

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

Conciseness4/5

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

The description is very short and front-loads the operation, with no wasted prose. The 'Args:' block is boilerplate but harmless, and the whole thing is easily scanned.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. However, for a destructive, unannotated delete, the description omits cascade behavior, irreversibility, and prerequisites, leaving an agent without the information needed to invoke it safely.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, yet it only restates the parameter name ('The product ID to delete') without adding type, format, or source context (e.g., whether it comes from list_products/get_product). Minimal value beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource ('Delete a product'), making the operation unambiguous. It does not differentiate itself from the many sibling delete tools (delete_engagement, delete_user, delete_test, delete_risk_acceptance), but the resource is clear enough that an agent can route to it.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any preconditions. It does not warn that this is irreversible, does not mention whether dependent engagements/findings must be removed first, and does not point to any related tool.

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

delete_risk_acceptanceC

Delete a risk acceptance.

Args: risk_acceptance_id: The risk acceptance ID

ParametersJSON Schema
NameRequiredDescriptionDefault
risk_acceptance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. Beyond the word 'Delete' implying a mutation, it discloses nothing about irreversibility, required permissions, or whether the acceptance can be restored — all critical for a destructive operation.

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

Conciseness3/5

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

The description is short and the core action is front-loaded, which is good. However, the 'Args:' block is pure restatement of the schema and adds no value, so space is spent without earning it.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. But for a destructive, unannotated single-parameter tool, the absence of any warning about irreversibility, permissions, or side effects leaves a meaningful gap.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only restates the parameter name ('risk_acceptance_id: The risk acceptance ID') — information already conveyed by the schema property title. No format, origin, or lookup guidance is added.

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

Purpose4/5

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

The description states a specific verb and resource ('Delete a risk acceptance'), which is unambiguous. However, it does not differentiate itself from the closely related siblings expire_risk_acceptance and reinstate_risk_acceptance, so it lacks the sibling-awareness a 5 would require.

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

Usage Guidelines2/5

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

There is no guidance on when to delete versus expire or reinstate a risk acceptance, nor any mention of prerequisites or consequences. The agent is left to infer usage entirely from the tool name.

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

delete_testC

Delete a test.

Args: test_id: The test ID to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
test_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "Delete" implies a destructive, likely irreversible mutation, but the description says nothing about cascade effects on associated findings/notes, required permissions, or reversibility. It adds only the bare operation name.

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

Conciseness4/5

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

Very short and front-loaded; the operation is stated in the first line and the argument list follows. There is no padding, though the Args block itself carries almost no information.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but for a destructive tool with zero annotation coverage the description omits side effects, scope of deletion, and permission requirements. What remains is insufficient for an agent to call this safely.

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

Parameters2/5

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

Schema description coverage is 0%, and the single param is documented only as "The test ID to delete," which restates the param name and the schema title "Test Id" without adding meaning such as format, source, or where to obtain the ID.

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

Purpose4/5

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

States a specific verb and resource ("Delete a test"), which is unambiguous against siblings like get_test, create_test, update_test, and list_tests. It does not explicitly name an alternative, but the delete semantics are clear from the verb.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no exclusions. Nothing tells the agent whether this is the right call versus update_test or whether related objects must be handled first.

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

delete_userC

Delete a user.

Args: user_id: The user ID to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It does not state whether deletion is permanent, whether it requires elevated permissions, whether associated data (tests, findings, notes) is cascaded, or whether it is reversible. 'Delete' implies destruction but no consequence detail is given.

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

Conciseness3/5

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

Very short and front-loaded, which is good, but the 'Args:' block largely duplicates the schema and the overall text is under-specified rather than efficiently informative. Adequate structurally with no waste to cut, but no substance added.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, for a destructive tool with zero annotations and no permission/cascade/reversibility context, the description is thinner than the operation warrants. It is minimally complete but leaves significant behavioral gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It restates the single required parameter ('user_id: The user ID to delete') but adds no meaning beyond the property name and type already in the schema. Marginal value only.

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

Purpose3/5

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

States a specific verb and resource ('Delete a user'), which is clear on its own. However, it offers no differentiation from siblings like delete_organization, delete_product, or delete_engagement, and nothing distinguishes it from update_user semantics beyond the verb. Minimum viable clarity.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is provided. For a destructive, irreversible operation there is ample opportunity to explain context (e.g., use update_user to deactivate instead, or confirm authorization) and none is taken.

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

expire_risk_acceptanceA

Expire a risk acceptance early (reactivates its findings).

Args: risk_acceptance_id: The risk acceptance ID reason: Optional reason for expiring

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
risk_acceptance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the key side effect (reactivates findings), which is valuable, but does not state permission requirements, reversibility, or whether already-expired acceptances error out.

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

Conciseness4/5

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

The one-line summary is front-loaded with the critical side effect, and the Args block is minimal. Slightly mechanical formatting adds minor overhead but no real waste.

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

Completeness3/5

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

Output schema exists so return values needn't be explained, and the side effect is covered. But with no annotations and 0% schema coverage on a mutation tool, the definition leaves permissions, error cases, and interaction with delete/reinstate siblings unstated.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate; it names both parameters and clarifies that reason is optional, but adds no format, constraints, or meaning (e.g., whether reason is stored in audit history) beyond the schema.

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

Purpose5/5

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

States a specific verb+resource (expire a risk acceptance) and immediately clarifies the consequence (reactivates its findings), which distinguishes it from siblings like delete_risk_acceptance or reinstate_risk_acceptance.

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

Usage Guidelines3/5

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

The parenthetical 'reactivates its findings' implies when this is used (ending risk acceptance before natural expiry), but there is no explicit when-to-use vs. delete_risk_acceptance or reinstate_risk_acceptance, and no mention of conditions or prerequisites.

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

get_celery_queue_detailsA

Get per-task breakdown of the Celery queue.

Returns task names, counts, and queue positions. May be slow for large queues.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it partially meets it by disclosing the real performance trait 'May be slow for large queues'. It still omits the read-only nature, whether it touches or resolves tasks, and any pagination or timeout behavior, which matters for an operation the description itself warns can be slow.

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

Conciseness5/5

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

Three short declarative sentences, with the core purpose front-loaded and the performance warning following immediately after. Every sentence carries distinct information: purpose, payload, and cost.

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

Completeness4/5

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

An output schema exists, so the description does not need to enumerate return fields. It covers purpose, output shape at a high level, and a meaningful latency caveat; the remaining gap is sibling differentiation from get_celery_status.

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

Parameters4/5

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

The tool takes zero parameters, so per the baseline rubric the schema is the only concern and the description has nothing extra to document. There is no parameter-level ambiguity for the description to resolve.

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

Purpose4/5

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

States a specific verb and resource: 'Get per-task breakdown of the Celery queue', with the unit of granularity (per-task) distinguishing it from a generic status call. It does not, however, name or contrast with the closest siblings get_celery_status, purge_celery_queue, or purge_celery_task, so the agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no named alternative. The description never explains how this differs from get_celery_status or when a task-level breakdown is preferable, leaving routing entirely to inference from the tool name.

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

get_celery_statusA

Get Celery worker and queue status.

Returns worker liveness, pending queue length, and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the three return categories (liveness, queue length, configuration), which is useful, but says nothing about freshness, cost, permissions, or whether it is read-only. Adequate but with clear gaps.

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

Conciseness5/5

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

Two sentences, front-loaded with the purpose, then a compact enumeration of the return values. Nothing wasted.

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

Completeness4/5

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

An output schema exists, so the description needn't explain return structure, and it sensibly summarizes the return categories instead. Combined with zero parameters this is largely complete; only the missing sibling differentiation and usage context keep it short of 5.

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

Parameters4/5

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

Parameter count is 0, so the baseline is 4. The description correctly introduces no parameter concepts and needs none.

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

Purpose4/5

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

States a specific verb (get) and resource (Celery worker and queue status), and names the returned fields. Siblings get_celery_queue_details and purge_celery_queue are related, but the description doesn't explicitly differentiate itself from get_celery_queue_details, so it falls short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance, no conditions, and no mention of alternatives despite get_celery_queue_details being a clear sibling for queue-specific inspection. The agent is left to infer that this is the general overview tool.

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

get_current_userA

Get the currently authenticated user's profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the behavioral burden. 'Get' reasonably implies a read-only, idempotent operation, and with no parameters there is little that could be destroyed or misconfigured. However, it says nothing about authentication requirements or whether the result is scoped to the caller's session, leaving the safety/behavior profile to inference.

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

Conciseness5/5

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

A single well-formed sentence with no filler, and the distinguishing scope qualifier sits immediately after the verb-resource core.

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

Completeness4/5

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

For a zero-parameter read tool with an output schema covering the return shape, the description provides everything needed to invoke it correctly. The only substantial omission is explicit routing guidance relative to get_user/list_users.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-for-4 case: there is no argument semantics for the description to explain. The schema is empty and consistent with a self-scoped lookup.

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

Purpose4/5

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

The description states a specific verb and resource ('Get ... user's profile') and adds a scoping qualifier ('currently authenticated') that meaningfully separates it from the sibling get_user, which takes a user identifier. It stops short of naming that sibling explicitly, so the differentiation is implied rather than stated.

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

Usage Guidelines3/5

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

There is no explicit when-to-use statement or named alternative, but the phrase 'currently authenticated user' implicitly tells the agent to pick this over get_user when the caller's own identity is wanted. Usage is inferable rather than spelled out.

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

get_endpointB

Get a single endpoint by ID.

Args: endpoint_id: The endpoint ID

ParametersJSON Schema
NameRequiredDescriptionDefault
endpoint_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: no permission requirements, no error behavior for an unknown ID, no note on whether the returned endpoint is scoped to an org/product. 'Get' weakly implies read-only, but that is inference, not disclosure.

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

Conciseness4/5

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

The core sentence is short and front-loaded. The 'Args:' block is boilerplate that duplicates the schema's own endpoint_id property, adding bulk without information.

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

Completeness4/5

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

This is a simple single-entity getter with a one-field schema and an output schema that already documents the return shape, so the bar is low. The description covers purpose and the required identifier, though the absence of any annotation context keeps it from being fully complete.

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

Parameters3/5

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

Schema description coverage is 0%, but there is only one parameter and the description's 'The endpoint ID' merely restates the schema field name without adding format, source, or lookup context. For a single trivially-named param this is the minimum viable level.

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

Purpose4/5

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

States a specific verb and resource ('Get a single endpoint by ID'), and the word 'single' implicitly distinguishes it from the sibling list_endpoints. It is clear but does not explicitly name or contrast with any sibling tool.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus list_endpoints or how an endpoint_id is obtained. The agent must infer the lookup use case entirely from the name.

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

get_engagementC

Get a single engagement by ID.

Args: engagement_id: The engagement ID

ParametersJSON Schema
NameRequiredDescriptionDefault
engagement_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it discloses nothing about behavior beyond the basic lookup: no error/not-found behavior, permissions, or scoping. It is a simple read, but with zero annotation coverage this is thin.

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

Conciseness4/5

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

Very short and front-loaded with the core action in the first sentence. The Args stanza is boilerplate but earns its place as the only parameter documentation.

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

Completeness3/5

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

An output schema exists, so return-value explanation is not needed, and the tool is simple. However, for a get-by-ID tool with no annotations, the absence of error/not-found and ID-sourcing context leaves it only minimally complete.

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

Parameters2/5

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

The single parameter has 0% schema description coverage, so the description should compensate, but 'The engagement ID' merely restates the name and omits that it is an integer or where such an ID comes from (e.g., list_engagements).

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

Purpose4/5

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

States a specific verb and resource ('Get a single engagement by ID'), which distinguishes it from list_engagements and the create/update/delete engagement siblings. It stops short of explicitly naming those alternatives, but the singular scope is clear.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus list_engagements when the ID is unknown, nor any prerequisite about the engagement existing. Usage is only implied by the tool name.

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

get_findingC

Get a single finding by ID.

Args: finding_id: The finding ID

ParametersJSON Schema
NameRequiredDescriptionDefault
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read-only operation, but nothing states whether the call requires specific permissions, what happens on a nonexistent ID, or any other behavioral trait. Given an output schema exists, return format need not be described, but the description adds no behavioral context at all.

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

Conciseness4/5

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

The description is two short lines that are front-loaded with the essential purpose. It is efficient and contains no filler, though the 'Args:' block largely restates the schema.

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

Completeness3/5

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

For a simple single-entity getter with an output schema present, the description is minimally adequate: the agent knows what it does and what it needs. But it omits sibling differentiation and any parameter format detail, so it is not fully complete for the surrounding tool landscape.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter is only restated as 'The finding ID,' which is essentially a tautology of the parameter name finding_id. No format, range, or origin of the ID is supplied to compensate for the schema gap.

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

Purpose4/5

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

States a specific verb (Get) and resource (finding) with the singular scope, so the agent knows it retrieves one entity. However, it does not differentiate itself from the many sibling retrieval tools (list_findings, get_finding_duplicates) that also operate on findings.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. The description does not clarify when to fetch a single finding versus using list_findings or get_finding_duplicates, leaving the agent to infer the distinction from the name alone.

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

get_finding_duplicatesC

Get duplicate findings for a given finding.

Args: finding_id: The finding ID

ParametersJSON Schema
NameRequiredDescriptionDefault
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it says nothing about read-only nature, permissions required, or what a 'duplicate' relationship means in this system. The only signal is the weak implication of 'Get' that this is a read operation, which is not enough for a tool with zero 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.

Conciseness3/5

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

The description is short and front-loads the core action, which is good. However, the Args block is redundant with the schema and the overall text is terse to the point of under-specification rather than deliberate concision.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a tool embedded in a dense finding-lifecycle sibling set with no annotations, the description should clarify prerequisites, the meaning of duplicates, and its relation to close_finding_duplicate/reset_finding_duplicate_status. It omits all of this.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but 'finding_id: The finding ID' merely restates the parameter name and adds no format, source, or constraint detail. An agent gains nothing beyond what the schema already shows.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get duplicate findings for a given finding,' which is clear enough for an agent to understand the operation. However, it does not distinguish this tool from closely related siblings like close_finding_duplicate or reset_finding_duplicate_status, which also operate on the duplicate concept.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool, what preconditions apply, or how it differs from the numerous sibling finding tools. The agent must infer usage entirely from the name and sibling list.

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

get_jira_instanceC

Get a JIRA instance configuration by ID.

Args: instance_id: The JIRA instance ID

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a safe read, but the description says nothing about required permissions, behavior when the instance_id does not exist, or whether configuration data is cached/sensitive.

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

Conciseness4/5

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

The description is short and front-loaded with the core purpose, though the Args block adds nothing over the schema and could be trimmed without loss.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and this is a simple single-parameter getter. Still, it lacks any auth/permission or not-found context that would make it fully self-sufficient for a mutation-free admin read.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate, but it only restates the parameter name as 'The JIRA instance ID' and adds no type, format, or lookup-semantics detail beyond what the schema title already conveys.

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

Purpose4/5

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

States a specific verb and resource (get a JIRA instance configuration) scoped by ID, which cleanly distinguishes it from list_jira_instances, create_jira_instance, and update_jira_instance. It does not, however, explicitly name any sibling tool to route against.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_jira_instances or get_system_settings. The agent must infer the context entirely from the name.

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

get_organizationC

Get a single organization by ID.

Args: organization_id: The organization (product type) ID

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries the full burden, but it only says it fetches by ID. It does not disclose permissions required, whether missing IDs raise or return null, or any behavioral traits beyond the obvious read.

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

Conciseness4/5

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

Very brief and front-loaded with the core statement. The 'Args:' block is slightly redundant given the schema, but overall it's tight and readable.

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

Completeness3/5

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

An output schema exists so return values need not be explained. However, without annotations or usage context, the description is minimally adequate for a simple lookup tool but leaves gaps around error behavior and permissions.

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

Parameters3/5

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

Schema description coverage is 0% and there is one parameter. The description identifies organization_id as 'The organization (product type) ID', which adds a clarification beyond the bare schema, but doesn't explain format or constraints. Baseline for a 1-param tool with no schema descriptions is around 3.

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

Purpose4/5

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

States a specific verb (get) and resource (organization) with scope 'single' and 'by ID'. Clear enough to distinguish from list_organizations and create/update/delete siblings, though it doesn't name them explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of alternatives like list_organizations for enumeration, no prerequisites. The agent must infer usage from the name alone.

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

get_productC

Get a single product by ID.

Args: product_id: The product ID

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation but says nothing about auth/permission requirements, error behavior when the ID does not exist, or any side effects, which is a meaningful gap for a tool with zero 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.

Conciseness3/5

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

The purpose sentence is front-loaded and terse, but the 'Args:' block duplicates what the input schema already declares, so it does not earn its place. The result is brief but not optimally structured.

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

Completeness3/5

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

The tool is simple (one required integer param) and an output schema exists to describe return values, so the description is not required to explain the response shape. Still, it omits any note on failure modes or lookup semantics, leaving it minimally adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description's 'product_id: The product ID' merely restates the parameter name and type already visible in the schema. No format, range, or source-of-value guidance is added, so the description does not compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource ('Get a single product by ID'), which clearly separates it from the list_products and create/update/delete_product siblings by implying retrieval of exactly one entity. However, it never names those siblings or explains the retrieval scope (e.g., what a 'product' contains), so it stops short of full differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus list_products or get_product-adjacent lookups, and no mention of prerequisites. 'By ID' is the only hint of the usage condition, which an agent must infer.

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

get_risk_acceptanceB

Get a risk acceptance by ID.

Args: risk_acceptance_id: The risk acceptance ID

ParametersJSON Schema
NameRequiredDescriptionDefault
risk_acceptance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden, but it discloses nothing beyond the basic purpose. It does not mention read-only nature, error behavior for missing IDs, permission requirements, or any side effects.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded with the core action. The Args block is minimal and directly documents the sole parameter, with no wasted sentences.

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

Completeness3/5

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

For a simple one-parameter retrieval tool with an output schema, the description covers the basic purpose and parameter, but it omits usage context and behavioral details such as not-found handling. With no annotations, these gaps are noticeable, though the low complexity keeps it minimally viable.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only restates the parameter name as 'The risk acceptance ID' without adding format, source, or validation details. This is effectively tautological with the schema title 'Risk Acceptance Id' and adds no meaningful semantic value.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('a risk acceptance') and clarifies retrieval by ID, which distinguishes it from sibling list, create, update, and delete operations. The purpose is unambiguous for an agent scanning available tools.

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

Usage Guidelines2/5

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

The description provides no explicit when-to-use guidance, prerequisites, or alternatives to consider. While 'by ID' implies that an ID is needed, it does not explain when to choose this tool over list_risk_acceptances or other retrieval methods.

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

get_system_settingsB

Get DefectDojo system settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether settings are instance-wide or user-scoped, whether the call requires elevated permissions, or whether any of the data is sensitive. Only the verb 'Get' weakly implies a non-mutating read.

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

Conciseness4/5

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

A single short, front-loaded sentence with no filler or redundancy. It is appropriately sized, though the repeated 'DefectDojo' brand adds no discriminating information.

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

Completeness4/5

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

An output schema exists, so the description need not enumerate return values, and with zero input parameters there is little surface area to cover. It identifies the resource being read, which is enough for an agent to invoke it correctly, though the absence of annotations leaves permission/scope questions unanswered.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to clarify beyond what the empty schema already shows. Baseline 4 applies for a parameterless tool.

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

Purpose4/5

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

The description pairs a specific verb ('Get') with a specific resource ('DefectDojo system settings'), so the agent immediately knows it is a read of configuration. It does not explicitly name the sibling write counterpart update_system_settings, but the verb alone signals the read/write distinction.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus alternatives, no prerequisites (e.g. admin privileges), and no mention of the sibling update_system_settings or the related get_celery_status/get_jira_instance tools. Usage is only implied by the verb.

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

get_testC

Get a single test by ID.

Args: test_id: The test ID

ParametersJSON Schema
NameRequiredDescriptionDefault
test_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden and delivers almost nothing beyond 'it retrieves'. It does not state that the operation is read-only, whether it requires authentication or specific permissions, or how a missing/invalid test ID is surfaced. For a lookup tool this is a real gap.

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

Conciseness4/5

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

The one-line purpose is front-loaded and free of padding. The boilerplate 'Args:' block is redundant against the schema but adds negligible length.

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

Completeness3/5

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

An output schema exists, so return-value documentation is not required. However, with no annotations and no error/not-found behavior described, a mutation-free but failure-prone lookup is only minimally covered.

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

Parameters2/5

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

Schema description coverage is 0%, and the only argument note ('test_id: The test ID') merely restates the schema property name. It adds no information about ID format, where the ID originates, or whether it must be an existing test, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (Get) and resource (a single test) with the lookup key (by ID), which is unambiguous. It does not differentiate itself from siblings such as list_tests or get_product/get_finding, but the resource is distinct enough that an agent can route correctly.

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

Usage Guidelines2/5

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

No guidance on when to use this versus list_tests (to enumerate tests) or the update/delete_test siblings. There are no stated prerequisites, no mention of what happens if the ID is unknown, and no indication that the ID must come from a prior list call.

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

get_userC

Get a single user by ID.

Args: user_id: The user ID

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the lookup itself: no permission requirements, no behavior on missing/not-found IDs, no error semantics. It is a bare description with zero added 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.

Conciseness4/5

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

Very short and front-loaded, with the action stated in the first clause. The Args block is somewhat redundant given the single obvious parameter, but the text is not padded.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the operation is intrinsically simple. Still, with no annotations and no disambiguation from get_current_user, it is only minimally complete for correct tool selection.

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

Parameters2/5

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

Only one parameter, and the description's 'user_id: The user ID' merely restates the parameter name with zero schema description coverage. It adds no format details (e.g. integer ID vs username) or clarification beyond what the schema already shows.

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

Purpose4/5

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

States a specific verb and resource ('Get a single user by ID'), and 'single' partially distinguishes it from list_users. However, it never names the closely related get_current_user sibling, so an agent still has to infer which of the two to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of the alternatives (get_current_user, list_users), and no prerequisites or exclusions. The intent is only implied by the tool name.

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

import_scanA

Import a scan report into DefectDojo.

Either engagement_id OR (product_name + auto_create_context=True) must be provided. Either file_path (local file) or scan_data (raw content) must be provided.

Args: scan_type: Scanner type (e.g., "ZAP Scan", "Nessus Scan", "SARIF", "Trivy Scan", etc.) file_path: Path to the scan results file on the local filesystem scan_data: Raw scan data as string (alternative to file_path) engagement_id: Target engagement ID product_name: Product name (for auto-create context) product_type_name: Product type name (for auto-create context) engagement_name: Engagement name (for auto-create context) test_title: Custom test title auto_create_context: Auto-create product/engagement if they don't exist active: Mark findings as active verified: Mark findings as verified close_old_findings: Close findings not present in new scan close_old_findings_product_scope: Close at product scope push_to_jira: Push findings to JIRA minimum_severity: Minimum severity to import (Info, Low, Medium, High, Critical) deduplication_on_engagement: Deduplicate within engagement environment: Environment name version: Version being scanned build_id: Build ID branch_tag: Branch or tag commit_hash: Commit hash service: Service name group_by: Group findings by (component_name, component_name+component_version, file_path) tags: Tags to apply

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
activeNo
serviceNo
versionNo
build_idNo
group_byNo
verifiedNo
file_pathNo
scan_dataNo
scan_typeYes
branch_tagNo
test_titleNo
commit_hashNo
environmentNo
product_nameNo
push_to_jiraNo
engagement_idNo
engagement_nameNo
minimum_severityNoInfo
product_type_nameNo
close_old_findingsNo
auto_create_contextNo
deduplication_on_engagementNo
close_old_findings_product_scopeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it delivers: it documents that auto_create_context can create products/engagements, that close_old_findings will close findings absent from the new scan, and the push_to_jira side effect. It omits permission/auth requirements and deduplication semantics, keeping it below a 5.

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

Conciseness4/5

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

Front-loaded with purpose and the two hard requirements before the Args block, and the prose is tight. The per-parameter list is long but each line carries distinct information needed for a 24-param tool, so it is not wasteful.

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

Completeness4/5

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

For a 24-parameter import with 0% schema coverage and no annotations, the description manages to explain the requirement combinations and the key behavioral toggles. It does not mention auth prerequisites, import processing/async behavior, or how it differs from reimport_scan, but an output schema exists so return values need not be covered.

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

Parameters4/5

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

Schema description coverage is 0% across 24 parameters, so the description must compensate, and it annotates nearly all of them ('auto-create product/engagement if they don't exist', 'close findings not present in new scan', severity values, group_by values). The bare group_by enumerations and some terse entries (test_title, tags) leave minor gaps.

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

Purpose5/5

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

The first sentence states a specific verb+resource ('Import a scan report into DefectDojo'), and the sibling context (reimport_scan) makes the distinction clear: import creates a new test from a report whereas reimport targets an existing one. The agent can tell what this does without opening the schema.

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

Usage Guidelines4/5

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

The description gives explicit mutually-exclusive requirements: 'Either engagement_id OR (product_name + auto_create_context=True)' and 'Either file_path or scan_data'. This is real routing guidance that prevents common invocation errors. It does not, however, state when to prefer this over the sibling reimport_scan, so it falls short of a 5.

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

list_endpointsB

List endpoints with optional filters.

Args: product_id: Filter by product ID host: Filter by host (contains) protocol: Filter by protocol path: Filter by path (contains) tag: Filter by tag limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
hostNo
pathNo
limitNo
offsetNo
protocolNo
product_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and 'list' implies a non-destructive read. It usefully discloses that host and path use contains-matching, which is real behavioral context beyond the schema. It does not state pagination defaults, ordering, or that no writes occur, leaving some gaps.

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

Conciseness4/5

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

Front-loads the purpose in one line, then lists parameters compactly with no filler. The Args block is slightly verbose but every entry maps to a real parameter and earns its place.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and all params are documented. However, the absence of annotations plus no usage guidance leaves the description only minimally complete for a seven-parameter tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry parameter meaning — and it does, documenting all seven with intent (e.g., product_id, host, protocol, limit, offset). The '(contains)' annotations add matching semantics the bare schema does not convey.

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

Purpose4/5

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

States a specific verb and resource ('List endpoints with optional filters'), so the agent immediately knows it retrieves a collection. It does not explicitly distinguish itself from the sibling get_endpoint, but the list/get split is self-evident from the name and description.

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

Usage Guidelines2/5

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

No guidance on when to choose this over get_endpoint or which filters are appropriate for which scenario. The description merely says filters are optional without stating conditions, exclusions, or relationships to sibling tools.

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

list_endpoint_statusC

List endpoint statuses (relationship between endpoints and findings).

Args: endpoint_id: Filter by endpoint ID finding_id: Filter by finding ID mitigated: Filter by mitigated status limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
mitigatedNo
finding_idNo
endpoint_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state that this is a read-only operation, mention permission/auth requirements, or describe pagination defaults or ordering. Only the incidental 'limit'/'offset' params hint at paging.

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

Conciseness3/5

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

The one-line purpose is front-loaded and waste-free, but the Args block is low-value filler that mostly echoes parameter names, and there is no additional context to justify the structure. Adequate, not tight.

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

Completeness3/5

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

The presence of an output schema means return values need not be explained. However, with zero schema coverage and no annotations, the description is thin on behavior and defaults for a five-parameter list tool, leaving the agent with only the bare minimum to invoke it.

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

Parameters3/5

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

Schema description coverage is 0%, so the Args block is the only documentation. It lists all five parameters, but entries like 'Filter by endpoint ID' and 'Filter by finding ID' largely restate the parameter names; only 'Results per page' and 'Pagination offset' add real meaning. It fills the gap minimally rather than fully compensating.

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

Purpose4/5

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

States a clear verb+resource ('List endpoint statuses') and clarifies the concept with the parenthetical '(relationship between endpoints and findings)', which helps distinguish it from list_endpoints and list_findings. It does not, however, explicitly name a sibling it is not, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance. Given the many sibling list tools (list_endpoints, list_findings, get_endpoint), the description never says when an agent should reach for this relationship view instead of another call. Usage is only implied by the name.

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

list_engagement_notesC

List notes for an engagement.

Args: engagement_id: The engagement ID

ParametersJSON Schema
NameRequiredDescriptionDefault
engagement_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It says nothing about ordering, pagination, size limits, or permission requirements for reading an engagement's notes; it only restates the operation.

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

Conciseness3/5

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

The opening sentence is front-loaded and efficient, but the Args block is pure redundancy that adds no information beyond the schema. It is short, yet part of that shortness comes from omission rather than tight writing.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. For a simple one-parameter read tool the description is minimally viable, but it omits any note on result ordering or scope that would help an agent use it confidently.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter, and the description's 'Args: engagement_id: The engagement ID' merely repeats the parameter name without adding format, source, or lookup guidance. It therefore compensates for none of the coverage gap.

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

Purpose4/5

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

The description states a clear verb and resource: 'List notes for an engagement.' That is specific enough to identify the operation, but it offers no differentiation from siblings such as list_finding_notes, list_test_notes, or add_engagement_note, leaving the agent to infer the distinction from the name alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this rather than the many other note-listing or note-adding tools. No preconditions, no statement of what it returns, and no mention of how it relates to add_engagement_note or list_note_types.

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

list_engagementsB

List engagements with optional filters.

Args: product_id: Filter by product ID name: Filter by name (contains) status: Filter by status (Not Started, In Progress, Completed) engagement_type: Filter by type (Interactive, CI/CD) tag: Filter by tag name limit: Results per page (default 25) offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
nameNo
limitNo
offsetNo
statusNo
product_idNo
engagement_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It never states that this is a read-only, non-mutating operation, nor mentions permissions, default ordering, or total-count behavior. 'List' implies read semantics, but that is left to inference rather than disclosed.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence and the Args block is a tight, scannable list with no filler. Nothing is padded, though the block is a little spartan compared to prose that would flow for an agent.

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

Completeness4/5

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

Given seven optional parameters, an output schema that already defines the return shape, and no annotations, the description supplies the parameter detail needed to call it correctly. It does not address ordering or the relationship to other engagement-listing views, but the essentials for correct invocation are present.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it names all seven parameters and adds real meaning such as 'contains' semantics for name, the enumerated status values (Not Started, In Progress, Completed), the engagement_type values (Interactive, CI/CD), and 'Results per page (default 25)' for limit. Minor gaps remain (e.g., how offset interacts with total results).

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

Purpose4/5

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

The opening sentence states a specific verb and resource ('List engagements') with the clarifying modifier 'with optional filters.' An agent can distinguish it from get_engagement/create_engagement/update_engagement by the plural-list form, though the description never names those siblings as alternatives.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this versus get_engagement (singular), list_products, or the engagement-note tools. It only says filters are optional, which describes the shape of the call, not the conditions that select it.

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

list_finding_metadataC

List metadata key-value pairs for a finding.

Args: finding_id: The finding ID

ParametersJSON Schema
NameRequiredDescriptionDefault
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not state whether this is a read-only operation, whether metadata is paginated, what format key-value pairs take, or any authentication requirements. For a list tool with no annotations and no output schema explanation (though output schema exists), this is a significant gap.

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

Conciseness4/5

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

The description is very brief (two lines) and front-loads the purpose. The 'Args:' section is a standard docstring format but adds little beyond repeating the parameter. It is concise but not maximally informative per sentence.

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

Completeness2/5

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

Given that there are no annotations, an output schema exists (which the description need not explain), and the tool is a simple list operation with one parameter, the description is missing key behavioral context: read-only status, return structure (key-value pairs), and any usage caveats. It is not complete enough for an agent to call with full confidence.

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

Parameters3/5

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

Schema description coverage is 0%, but there is only one parameter. The description repeats the parameter name ('finding_id') and provides the same information as the schema's title ('Finding Id'). It does not add type hints, constraints, or examples beyond what the schema already implies. Baseline is 3 due to low parameter count (1) and minimal room to add value.

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

Purpose4/5

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

The description states a specific verb and resource: 'List metadata key-value pairs for a finding.' This is clear and distinguishable from the sibling add_finding_metadata (a write operation). It does not explicitly differentiate itself from other list_* tools, but the resource (finding metadata) is specific enough to identify the target.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It is not stated whether this is the only way to retrieve metadata, nor whether there are related tools for filtering or searching. The agent must infer usage from the name alone.

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

list_finding_notesB

List notes for a finding (ordered newest first).

Args: finding_id: The finding ID

ParametersJSON Schema
NameRequiredDescriptionDefault
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses the ordering behavior (newest first), which is a genuine trait beyond the schema, but omits any permission requirements, error behavior for missing findings, or pagination/volume characteristics.

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

Conciseness4/5

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

Front-loaded core sentence followed by a compact Args block; there is no filler. The Args boilerplate is slightly redundant but not wasteful.

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

Completeness3/5

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

For a simple read tool backed by an output schema, the description is close to sufficient, and the ordering note helps. It still says nothing about what happens when finding_id does not exist or about result size, leaving small gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, yet it only restates 'The finding ID', which duplicates the parameter name and the schema title. No type, format, or example is added.

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

Purpose4/5

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

States a specific verb (list) and resource (notes for a finding), and the name/description distinguishes it from list_test_notes and list_engagement_notes by scope. No explicit sibling differentiation in the text, but the resource is unambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance, prerequisites, or alternatives are offered. The reader must infer from the name that this is the read counterpart to add_finding_note/remove_finding_note; nothing routes them explicitly.

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

list_findingsB

List findings with optional filters.

Args: severity: Filter by severity (Critical, High, Medium, Low, Info) active: Filter active findings only verified: Filter verified findings only is_mitigated: Filter mitigated findings duplicate: Filter duplicates false_positive: Filter false positives (false_p) out_of_scope: Filter out-of-scope findings risk_accepted: Filter findings under an active risk acceptance test_id: Filter by test ID engagement_id: Filter by engagement ID (via test__engagement) product_id: Filter by product (asset) ID (via test__engagement__product) product_name: Filter by product (asset) name (server-side contains) title: Filter by title (server-side contains) title_exact: Filter by exact title cwe: Filter by CWE number vulnerability_id: Filter by CVE/vulnerability ID (e.g. CVE-2024-1234) reporter_id: Filter by reporter user ID mitigated_by_id: Filter by the user who mitigated outside_of_sla: Filter findings outside SLA tag: Filter by tag name (contains) ordering: Ordering fields (e.g. "-severity", "created", "-date") limit: Number of results per page (default 25) offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
cweNo
tagNo
limitNo
titleNo
activeNo
offsetNo
test_idNo
orderingNo
severityNo
verifiedNo
duplicateNo
product_idNo
reporter_idNo
title_exactNo
is_mitigatedNo
out_of_scopeNo
product_nameNo
engagement_idNo
risk_acceptedNo
false_positiveNo
outside_of_slaNo
mitigated_by_idNo
vulnerability_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose useful traits such as pagination (limit default 25, offset), server-side 'contains' matching for product_name/title, and that some filters traverse relations ('via test__engagement'). It omits permissions, ordering defaults, or any note on result size/cost.

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

Conciseness4/5

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

Front-loaded purpose sentence followed by a clean 'Args:' block where each line maps to one parameter. The length is justified by 23 parameters, though it reads as generated documentation rather than curated guidance.

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

Completeness4/5

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

An output schema exists, so return-value explanation is unnecessary, and all parameters are documented. The main gap is the absence of any guidance about alternatives or interaction with sibling finding tools, but for a filtered list operation the definition is largely sufficient.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: every one of the 23 parameters gets an explanation, including enum values for severity, relation traversal paths, and exact-vs-contains matching distinctions. This meaningfully exceeds the bare schema.

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

Purpose4/5

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

States a specific verb and resource ('List findings') and clarifies it takes optional filters. However, it does not differentiate from siblings like get_finding, list_finding_metadata, or get_finding_duplicates, so an agent must infer selection from the name alone.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives (get_finding, list_finding_metadata, get_finding_duplicates). The 'optional filters' phrasing implies a broad listing use case, but neither when-to-use conditions nor exclusions are stated.

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

list_jira_finding_mappingsA

List JIRA finding mappings (links between findings and JIRA issues).

Args: finding_id: Filter by finding ID jira_key: Filter by JIRA issue key limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
jira_keyNo
finding_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that results are paginated (limit/offset) and filterable, and 'List' implies a read operation, but it does not state read-only safety, permissions/auth needs, or ordering guarantees. Adequate but incomplete for a zero-annotation tool.

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

Conciseness5/5

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

Front-loaded purpose sentence followed by a compact argument list. No redundant or filler text; every line earns its place.

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

Completeness4/5

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

With an output schema present, return-value format need not be described, and all parameters are covered. The main gap is the absence of usage context (when to reach for this tool vs JIRA/finding siblings), but functionally the agent has enough to invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does document all four parameters (finding_id, jira_key, limit, offset) with their roles. The explanations are terse, but they cover every parameter the schema leaves bare.

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

Purpose4/5

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

States a specific verb and resource ('List JIRA finding mappings') and immediately clarifies the concept ('links between findings and JIRA issues'). This distinguishes it from the many finding- and JIRA-instance/project siblings, though it does not explicitly name an alternative tool.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, prerequisites, or alternatives. It only enumerates filter arguments, leaving the agent to infer that this is the tool for inspecting finding-to-JIRA links versus related siblings like get_jira_instance or list_jira_projects.

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

list_jira_instancesC

List configured JIRA instances.

Args: limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden of behavioral disclosure. It hints at pagination via limit/offset but says nothing about authentication needs, result ordering, default page size behavior, or what happens when no instances are configured.

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

Conciseness4/5

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

The description is short and front-loaded with the core purpose. The Args block is slightly redundant given only two self-explanatory parameters, but it is not wasteful.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and the tool is a simple read-only list. However, with no annotations and 0% schema coverage, the definition is only barely sufficient for an agent to call it confidently.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it does explain both parameters ('Results per page' for limit, 'Pagination offset' for offset). This is only minimal semantics though, adding little beyond the parameter names themselves.

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

Purpose4/5

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

States a clear verb ('List') and resource ('configured JIRA instances'), so the operation is unambiguous. It does not differentiate from siblings like get_jira_instance or create_jira_instance, but the singular/plural distinction is implicit.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus get_jira_instance, list_jira_projects, or list_jira_finding_mappings. No prerequisites, no context about what 'configured' implies, and no exclusions are provided.

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

list_jira_projectsC

List JIRA project configurations.

Args: product_id: Filter by product ID engagement_id: Filter by engagement ID limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
product_idNo
engagement_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It never states that this is a read-only operation, how pagination behaves, whether results are scoped to the caller, or any auth/rate-limit requirements.

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

Conciseness4/5

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

Front-loads the purpose in a single sentence followed by a compact arg list. Efficient overall, though the arg lines mostly echo the schema rather than adding information.

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

Completeness3/5

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

An output schema exists, so return values need not be described. Still, the absence of usage guidance and behavioral context leaves the definition only minimally complete for a multi-filter list tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it largely restates parameter names ('product_id: Filter by product ID'). It only marginally clarifies that 'limit' means results per page and omits types, defaults (25/0), and the nullable semantics of the filters.

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

Purpose4/5

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

States a specific verb and resource ('List JIRA project configurations'), which is clearly distinct from most siblings. However it does not differentiate itself from the closely related list_jira_instances and list_jira_finding_mappings tools.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, no prerequisites, and no reference to alternative list tools. The agent must infer usage entirely from the name and parameter names.

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

list_note_typesA

List available note types (usable in add_finding_note / close_finding).

Args: name: Filter by name (contains) limit: Results per page (default 25) offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a paginated read via limit/offset but never states that this is a safe, non-mutating operation, nor does it describe ordering or total-count behavior. For an unannotated list tool this is a meaningful gap.

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

Conciseness4/5

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

A single front-loaded purpose sentence followed by a tight Args block; nothing is wasted. The Args formatting is slightly redundant with the schema but keeps the param meanings adjacent to the tool.

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

Completeness3/5

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

For a simple 3-param read tool with an output schema, the description covers the essential semantics and the downstream use case. It stops short of stating pagination completion rules or that the list is read-only, which would fully close the gap given the absence of annotations.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate — and it does, defining 'name' as a contains-filter and explaining limit/offset as pagination with a default of 25. This is exactly the meaning the schema omits. It does not detail response payload structure, but the output schema covers that.

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

Purpose4/5

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

Clear verb+resource ('List available note types') and it usefully names the sibling tools where the result is consumed (add_finding_note / close_finding), giving the agent a reason to call it. It doesn't differentiate from the closely-related list_test_notes, but the purpose itself is unambiguous.

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

Usage Guidelines4/5

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

By pointing at add_finding_note and close_finding, the description implies when this lookup is needed: to discover valid note types before writing a note. There is no explicit when-not guidance, but the consuming context is stated clearly enough to route the agent.

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

list_notificationsC

List notification configurations.

Args: limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'List' implies a read-only operation, but the description never states permissions, pagination behavior beyond defaults, or ordering. For a bare listing tool this is a notable gap rather than a contradiction.

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

Conciseness4/5

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

Two sentences plus a compact Args block, front-loaded with the purpose. No filler; the only slight waste is that the Args entries restate what the param names already imply.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and both parameters are covered. However, for a listing tool with no annotations, the description omits filtering, ordering, and permission context, leaving it only minimally complete.

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

Parameters3/5

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

Schema description coverage is 0%, but the Args block compensates by documenting both parameters (limit = results per page, offset = pagination offset). This is the minimum viable semantic content for self-evident paging params; nothing about defaults, max values, or interaction between the two is added.

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

Purpose4/5

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

States a specific verb and resource ('List notification configurations'), so the agent knows it retrieves a collection of notification configs. No sibling tool in the list touches notifications, so there is nothing to differentiate against; it is clear but not sibling-contrasted.

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

Usage Guidelines2/5

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

Contains no when-to-use or when-not-to-use guidance, no prerequisites, and no mention of alternatives. Usage must be inferred from the name alone.

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

list_organizationsB

List organizations (product types).

Args: name: Filter by name (contains) limit: Results per page (default 25) offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'List' strongly implies a read-only, non-destructive operation and the pagination arguments imply paged results, but the description never explicitly states read-only behavior, required permissions, or default ordering.

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

Conciseness4/5

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

The purpose is front-loaded in one sentence followed by a compact Args list. It is appropriately sized for a simple list tool with no wasted prose.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and all three parameters are documented. However, the description lacks any usage context relative to the many sibling listing/CRUD tools, leaving the agent slightly under-informed about when to reach for it.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it documents that 'name' is a contains-match filter, that 'limit' defaults to 25 results per page, and that 'offset' is a pagination offset. This adds genuine semantics the raw schema lacks.

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

Purpose4/5

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

The description gives a clear verb ('List') and resource ('organizations'), with a parenthetical mapping them to the 'product types' domain concept. It does not, however, differentiate itself from siblings like list_products or get_organization, so an agent still has to infer its place in the family.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when this should be preferred over get_organization or list_products, and no prerequisites stated. Only the argument list is provided.

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

list_productsB

List products (assets) with optional filters.

Args: name: Filter by name (contains) name_exact: Filter by exact name organization_id: Filter by organization (product type) ID lifecycle: Filter by lifecycle (construction, production, retirement) tag: Filter by tag name (contains) external_audience: Filter by external audience flag internet_accessible: Filter by internet accessible flag limit: Results per page (default 25) offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
nameNo
limitNo
offsetNo
lifecycleNo
name_exactNo
organization_idNo
external_audienceNo
internet_accessibleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It implies a read-only list operation but doesn't state permissions required, whether results are paginated (though limit/offset imply it), or any other behavioral traits like ordering or default filters. An output schema exists, so return values needn't be explained, but safety and operational context 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.

Conciseness4/5

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

The description is front-loaded with a clear purpose statement followed by a structured parameter list. Each entry is brief and earns its place. However, the format could be considered slightly verbose for a list tool, but it's efficient overall.

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

Completeness3/5

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

Given 9 parameters, no annotations, and an output schema, the description covers parameter semantics well but lacks usage guidelines, behavioral context (e.g., sorting, permissions), and sibling differentiation. It is adequate but incomplete for a tool with this many parameters and no annotations.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate entirely. It provides concise explanations for all 9 parameters, clarifying that name and tag use 'contains' matching, lifecycle values, and that limit defaults to 25. This adds significant meaning beyond the bare schema, though it doesn't cover all edge cases (e.g., behavior of boolean flags).

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

Purpose4/5

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

The description uses a specific verb+resource ('List products (assets)') and clarifies the domain term 'products' as 'assets', which is valuable since sibling tools like list_organizations and list_findings make it ambiguous. However, it doesn't explicitly differentiate from sibling tools like get_product or list_engagements, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description states what can be filtered but provides no guidance on when to use this tool versus alternatives like get_product (for a single product) or list_organizations. No when-to-use or when-not-to-use information is given.

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

list_risk_acceptancesB

List risk acceptances.

Args: finding_id: Filter by an accepted finding ID owner_id: Filter by owner user ID name_contains: Filter by name (contains) accepted_by: Filter by acceptor name/email (contains) limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
owner_idNo
finding_idNo
accepted_byNo
name_containsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no indication that this is a safe read, no default page size or total-count/pagination behavior, no ordering guarantees, and no notes on how multiple filters combine. The limit/offset args hint at pagination but the description never explains the paging contract.

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

Conciseness4/5

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

The purpose sentence is front-loaded and the Args block is terse and scannable. Slight redundancy in restating parameter names that already appear in the schema, but nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be described. Still, for a six-parameter read tool with no annotations and no usage guidance, the definition leaves gaps around default paging values, filter combination, and how it relates to the single-record and mutating risk-acceptance siblings.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does document all six parameters with real semantics beyond their titles (e.g. 'Filter by an accepted finding ID', 'Filter by name (contains)', 'accepted_by: Filter by acceptor name/email (contains)'). It misses the defaults (limit=25, offset=0) and whether filters are ANDed, but the coverage is otherwise solid.

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

Purpose4/5

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

States a specific verb and resource ('List risk acceptances'), which is unambiguous on its own. However, it does not distinguish itself from the sibling read tool get_risk_acceptance or explain how this differs from list_findings-style listings, so an agent must infer that this is the collection-level read while get_risk_acceptance fetches one record.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites, and no reference to alternatives such as get_risk_acceptance for a single record. The argument list implies filtering by finding or owner, but the description never says why or when an agent should reach for this tool.

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

list_sla_configurationsC

List SLA configurations.

Args: limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. Aside from the implicit read-only nature of 'List', it discloses nothing about pagination behavior, default page size, ordering, or whether the listing is filtered by user/organization.

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

Conciseness4/5

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

Front-loaded with the purpose in one line and two compact param lines; no filler. It is sparse rather than bloated, though the Args block format is a bit boilerplate.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and both parameters are at least acknowledged. However, for a listing tool with zero annotation coverage and no schema param descriptions, the definition says nothing about pagination limits or result scope.

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

Parameters3/5

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

Schema description coverage is 0%, so the description is the only source of parameter meaning. It does explain both params ('Results per page', 'Pagination offset'), but this barely exceeds the schema titles 'Limit'/'Offset' and omits the 25/0 defaults that the schema declares.

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

Purpose4/5

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

States a clear verb+resource ('List SLA configurations'), which is unambiguous. There is no competing SLA-listing sibling among the listed tools, so sibling differentiation is largely moot, but the description adds no scope detail (e.g., global vs. organization-scoped).

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives. The agent is left to infer usage entirely from the name.

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

list_test_notesC

List notes for a test.

Args: test_id: The test ID

ParametersJSON Schema
NameRequiredDescriptionDefault
test_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It says nothing about pagination, ordering, whether an empty list is returned for a test with no notes, or what happens with an invalid test_id, all of which matter for a read tool with no 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.

Conciseness3/5

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

The one-line purpose is front-loaded and free of padding, but the 'Args:' block consumes half the text to deliver zero information beyond the parameter name, so the structure is efficient yet hollow.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the tool is a simple single-parameter list. Still, with no annotations and no statement of scope or pagination, the definition is only minimally adequate for invoking the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0% and the only parameter is explained as 'test_id: The test ID', which merely restates the parameter name. It adds no meaning such as where to obtain the ID or whether it must belong to an accessible test.

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

Purpose4/5

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

States a specific verb ('List') and resource ('notes for a test'), which is clear enough for an agent to pick it over list_finding_notes or list_engagement_notes. However, it offers no explicit differentiation from those sibling note-listing tools beyond the word 'test'.

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

Usage Guidelines2/5

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

No when-to-use context, no prerequisites, and no mention of the related add_test_note or list_note_types siblings. The agent must infer usage entirely from the name.

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

list_testsB

List tests with optional filters.

Args: engagement_id: Filter by engagement ID product_id: Filter by product ID (via engagement__product) test_type: Filter by test type ID tag: Filter by tag name (contains) title: Filter by title (contains) limit: Results per page (default 25) offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
limitNo
titleNo
offsetNo
test_typeNo
product_idNo
engagement_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. 'List' implies a read-only, non-destructive operation, and it usefully discloses that tag and title use substring ('contains') matching while IDs are exact filters, plus the limit default of 25. It does not disclose pagination termination, auth requirements, or result ordering.

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

Conciseness4/5

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

Front-loaded purpose sentence followed by a compact, uniformly formatted argument list. Each entry earns its place with no filler, though the 'Args:' block format is slightly verbose for a 7-param tool.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and all optional parameters are accounted for. For a filtered list tool the definition is nearly complete, missing only pagination behavior guidance.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: every one of the 7 parameters is documented, including the non-obvious relationship note 'via engagement__product' and the contains-vs-id matching distinction. Only offset is thinly described ('Pagination offset').

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

Purpose4/5

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

States a clear verb+resource ('List tests') and scopes it with 'optional filters,' so an agent knows this is a filtered read of test records. It does not explicitly differentiate from similarly named siblings like list_test_types or list_test_notes, relying on the resource noun to do that work.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no named alternatives, and no exclusions. The agent is left to infer that this is the enumeration tool versus get_test for a single record or create_test for mutations.

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

list_test_typesC

List available test types (scan types).

Args: name: Filter by name (contains) limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read operation and pagination but does not state whether results are filtered by user/permission, the return format, or any behavioral constraints beyond basic parameter documentation.

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

Conciseness4/5

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

The description is short and front-loaded with the core purpose. The Args list is terse but doesn't waste words; however, it reads more like a schema restatement than narrative guidance.

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

Completeness3/5

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

The tool is simple (list, 3 optional params, no annotations) and an output schema exists, so return values needn't be explained. The description is adequate for a basic list operation but thin on behavioral context and completely dependent on the caller's prior knowledge of the domain.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It provides minimal meaning for the three params ('Filter by name (contains)', 'Results per page', 'Pagination offset'), but these are far from complete—no format, defaults, or constraints are explained, leaving significant gaps for an undocumented schema.

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

Purpose4/5

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

States a specific verb (List) and resource (test types / scan types), including a helpful synonym clarification. It does not differentiate from the numerous sibling tools, but the resource is specific enough to be identifiable.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Siblings like list_note_types, list_tests, or list_endpoint_status exist, but the description offers no routing conditions or context.

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

list_usersB

List users with optional filters.

Args: username: Filter by username (contains) first_name: Filter by first name last_name: Filter by last name is_active: Filter by active status is_superuser: Filter by superuser status limit: Results per page offset: Pagination offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
usernameNo
is_activeNo
last_nameNo
first_nameNo
is_superuserNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about whether this is a read-only operation, what permissions are required, what the default result ordering is, or what happens with large result sets. The only behavioral hint is the 'limit/offset' mention, which describes pagination mechanics rather than tool behavior.

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

Conciseness4/5

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

One-line purpose statement followed by a compact Args block — front-loaded and free of filler. The list format is slightly verbose for self-evident parameters like limit and offset, but it remains scannable.

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

Completeness3/5

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

An output schema exists, so return values need not be documented, and the filter parameters are covered. However, with zero annotation coverage the definition omits any behavioral context (read-only nature, permissions, matching semantics for name fields), leaving a moderate gap for a 7-parameter listing tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description is the only source of parameter meaning, and it documents all seven parameters. It adds genuine value with the 'contains' matching semantics for username and by naming the boolean filters (is_active, is_superuser) that are otherwise only inferable from titles; it stops short of clarifying whether first_name/last_name are exact or partial matches.

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

Purpose4/5

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

The description states a specific verb and resource ('List users') plus the scoping qualifier 'with optional filters', which is immediately clear. It does not, however, distinguish this bulk listing operation from siblings like get_user, create_user, or update_user, nor does it clarify what set of users is returned (all users? current org?).

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus get_user (single lookup) or the other user-management siblings, and no stated prerequisites such as admin permissions. The phrase 'optional filters' implies a browsing/search use case but the agent must infer it.

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

purge_celery_queueA

Purge all pending Celery tasks from the queue.

Tasks already being executed are not affected. Use with caution - this removes ALL pending tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It clearly discloses that all pending tasks are removed, that already-executing tasks are not affected, and that the action is destructive via the caution. It does not state permission requirements or whether the purge is reversible.

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

Conciseness5/5

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

The description is three short sentences and front-loads the action and scope. The caution sentence reinforces the destructive nature without excessive length. Every sentence contributes useful information or emphasis.

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

Completeness4/5

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

Given the tool is a destructive, parameterless queue purge with no annotations and an output schema, the description covers the essential behavior and side effect on running tasks. It could mention irreversibility explicitly, but the warning and output schema make it sufficiently complete for invocation.

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

Parameters4/5

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

The tool has zero parameters, so the baseline of 4 applies. The description adds no parameter information because there are none to explain, and the empty schema is fully consistent with the described action.

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

Purpose4/5

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

The description states a specific verb (Purge), resource (Celery tasks), and scope (all pending from the queue). It implicitly distinguishes from the sibling purge_celery_task by saying ALL pending tasks, but does not name the sibling explicitly. This leaves a slight ambiguity an agent might need to resolve via schema inspection.

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

Usage Guidelines2/5

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

The description warns to use with caution, but does not explain when to use this tool versus alternatives such as purge_celery_task. No prerequisites or conditions for selection are provided. The caution is a safety note, not usage routing guidance.

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

purge_celery_taskB

Purge all queued instances of a specific Celery task.

Args: task_name: The task name to purge (e.g., "dojo.tasks.async_update")

ParametersJSON Schema
NameRequiredDescriptionDefault
task_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the scope of destruction ('all queued instances'), which is genuinely useful, but omits whether the purge is irreversible, whether it affects running tasks, and what permissions are required.

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

Conciseness4/5

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

The purpose is front-loaded in one clear sentence, and the Args block is brief. The example earns its place by clarifying the expected string format, though the block duplicates a parameter the schema already names.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. However, for a destructive, annotation-free operation, the description leaves gaps around irreversibility and preconditions that an agent should know before invoking it.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the meaning, and it does: task_name is described as the task name to purge and is illustrated with a concrete example, 'dojo.tasks.async_update'. The format/example adds real value beyond a bare string schema.

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

Purpose4/5

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

States a specific verb (purge) and a precisely scoped resource (all queued instances of a specific Celery task), which lets an agent distinguish it from the sibling purge_celery_queue that presumably clears whole queues. It stops short of naming that sibling explicitly, so the differentiation relies on inference.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no exclusions. With siblings like purge_celery_queue, get_celery_queue_details, and get_celery_status in the same surface, the description never says when a task-specific purge is the right choice over a queue-level purge.

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

reimport_scanA

Reimport a scan report (update existing test with new results).

Either test_id OR (product_name + test_title + auto_create_context) must be provided. Either file_path or scan_data must be provided.

Args: scan_type: Scanner type (e.g., "ZAP Scan", "Nessus Scan", "SARIF", etc.) test_id: Existing test ID to reimport into file_path: Path to the scan results file scan_data: Raw scan data as string product_name: Product name (for auto-create context) product_type_name: Product type name (for auto-create context) engagement_name: Engagement name (for auto-create context) test_title: Test title (for matching existing test) auto_create_context: Auto-create context if it doesn't exist active: Mark findings as active verified: Mark findings as verified close_old_findings: Close findings not in new scan (default True) close_old_findings_product_scope: Close at product scope push_to_jira: Push to JIRA minimum_severity: Minimum severity do_not_reactivate: Don't reactivate closed findings environment: Environment name version: Version being scanned build_id: Build ID branch_tag: Branch or tag commit_hash: Commit hash service: Service name group_by: Group findings by field tags: Tags to apply

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
activeNo
serviceNo
test_idNo
versionNo
build_idNo
group_byNo
verifiedNo
file_pathNo
scan_dataNo
scan_typeYes
branch_tagNo
test_titleNo
commit_hashNo
environmentNo
product_nameNo
push_to_jiraNo
engagement_nameNo
minimum_severityNoInfo
do_not_reactivateNo
product_type_nameNo
close_old_findingsNo
auto_create_contextNo
close_old_findings_product_scopeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the destructive side effect that close_old_findings (default True) closes findings absent from the new scan, and do_not_reactivate's effect. But it omits any mention of auth/permission requirements, whether reimport runs asynchronously, or how failures are surfaced, leaving material behavior undisclosed.

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

Conciseness5/5

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

Well front-loaded: purpose first, then the two either/or requirements, then the argument list. Given 24 undocumented parameters, the arg list earns its place rather than padding, and there is no redundant prose.

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

Completeness4/5

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

For a 24-parameter mutation tool with no annotations and an existing output schema, the description covers the calling requirements and all parameters. It is close to complete; only permission requirements and asynchronous/processing behavior are missing, which are minor given the output schema answers the return-value question.

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

Parameters4/5

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

Schema description coverage is 0% across 24 parameters, so the description must compensate, and it does gloss every parameter with a short meaning. Gaps remain for some (e.g. 'Minimum severity' gives no allowed values, 'group_by'/'tags' give no format), so it improves on the bare schema without being fully self-sufficient.

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

Purpose5/5

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

States a specific verb (reimport) and resource (scan report) and immediately clarifies the semantic with '(update existing test with new results)', which cleanly distinguishes it from the sibling import_scan that creates new tests. An agent can select between them without opening either schema.

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

Usage Guidelines3/5

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

The description gives the mutual-exclusivity constraints ('Either test_id OR product_name + test_title + auto_create_context'; 'Either file_path or scan_data'), which is genuine usage guidance. However, it never states when to prefer reimport_scan over import_scan or what prerequisites/permissions the caller needs. Usage is implied by the constraints rather than explicit.

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

reinstate_risk_acceptanceA

Reinstate an expired risk acceptance with a new (mandatory) expiration date.

Args: risk_acceptance_id: The risk acceptance ID expiration_date: New expiration date (YYYY-MM-DD or ISO datetime), must be in the future reason: Optional reason

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
expiration_dateYes
risk_acceptance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It discloses the mutation nature ('reinstate'), the mandatory requirement for a future expiration date, and that reason is optional. However, it omits key behaviors: whether reinstating a non-expired acceptance fails, what permissions are needed, whether the change is reversible or logged, and crucially, it doesn't explain output despite having an output schema (which does cover returns). The description adds moderate behavioral context but misses state-transition constraints.

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

Conciseness4/5

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

Front-loaded with the core action, then structured parameter documentation. It's efficient for a 3-param tool, using clear labels and constraints. Slightly verbose in using an Args section for only 3 parameters, but overall tight with no wasted sentences.

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

Completeness4/5

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

For a mutation tool with no annotations but an output schema (which covers returns), the description provides the necessary parameter details and notes the new expiration requirement. However, it lacks behavioral context like permission needs, error conditions (e.g., reinstating an already-active acceptance), and sibling differentiation. Given the complexity and missing annotations, it's fairly complete but not exhaustive.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does well: it names all three parameters, explains what each represents, specifies the format and future constraint for expiration_date (YYYY-MM-DD or ISO datetime, must be in the future), and marks reason as optional. This goes beyond the schema's bare type declarations. Minor gap: doesn't clarify the integer nature of risk_acceptance_id or whether it must reference an expired record.

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

Purpose5/5

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

States a specific verb (reinstate) and resource (expired risk acceptance) with scope qualifier (with a new expiration date). This clearly distinguishes it from siblings like expire_risk_acceptance, accept_risk, and update_risk_acceptance without ambiguity.

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

Usage Guidelines3/5

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

The description implies usage context by saying 'expired risk acceptance' and requiring a future expiration date, which indicates when this tool applies. However, it doesn't explicitly contrast with alternatives like update_risk_acceptance or accept_risk, nor does it specify prerequisites (e.g., must the acceptance already be expired). Implicit guidance only.

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

remove_finding_noteC

Remove a note from a finding.

Args: finding_id: The finding ID note_id: The note ID to remove (see list_finding_notes)

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYes
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Remove' implies a destructive mutation, but the description never says whether removal is permanent, what permissions are required, or what happens if the note does not exist. For a delete-style tool with zero annotation coverage this is a meaningful gap.

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

Conciseness4/5

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

Two short lines, front-loaded with the action, followed by a compact Args block. Nothing is padded, though the Args formatting is somewhat boilerplate for two self-evident parameters.

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

Completeness3/5

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

The call shape is inferable and an output schema exists to cover return values, so the tool is usable as documented. However, for a destructive operation with no annotations and 0% schema coverage, the description omits permanence, auth requirements, and failure behavior.

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

Parameters3/5

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

Schema description coverage is 0%, so the schema contributes nothing and the description must compensate. The Args block restates both names ('The finding ID', 'The note ID to remove') and usefully points to list_finding_notes as the way to find valid note IDs, which is the only real added meaning.

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

Purpose4/5

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

States a specific verb and resource ('Remove a note from a finding'), which cleanly separates it from add_finding_note and list_finding_notes in the sibling set. It does not explicitly name add_finding_note as the inverse, but the operation is unambiguous.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, nor any prerequisites or conditions. The only contextual hint is 'see list_finding_notes' for obtaining the note_id, which is a parameter-sourcing note rather than usage guidance.

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

reopen_findingA

Reopen (reactivate) a closed/mitigated finding.

Clears the mitigated state and any false-positive/duplicate/out-of-scope flags unless explicitly restored.

Args: finding_id: The finding ID to reopen note: Optional note explaining the reopening restore_false_positive: Keep the false_p flag as-is instead of clearing it restore_out_of_scope: Keep the out_of_scope flag as-is instead of clearing it

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
finding_idYes
restore_out_of_scopeNo
restore_false_positiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the key side effect: it clears the mitigated state and the false-positive/duplicate/out-of-scope flags unless explicitly restored. That is meaningful mutation context, though it omits permissions, reversibility, and what happens to unrelated finding state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action, follows with the state-change behavior, then lists args. Efficient and well structured, with only minor redundancy in the parenthetical and tautological finding_id gloss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with an output schema (so return values need not be explained) and no annotations, the description covers purpose, side effects, and all parameters. It stops short of auth/permission and reversibility details, which keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it documents all four parameters. The restore_false_positive/restore_out_of_scope explanations ('keep the flag as-is instead of clearing it') add real meaning, while finding_id's 'The finding ID to reopen' is only minimally informative.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Reopen (reactivate)') and resource ('a closed/mitigated finding'), and the parenthetical plus the state qualifier distinguish it from the close_finding* siblings. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'a closed/mitigated finding' implies this is only for findings in those states, but no explicit when-to-use guidance, prerequisites, or named alternatives (e.g. the many close_finding* siblings) are given. Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reset_finding_duplicate_statusC

Reset the duplicate status of a finding.

Args: finding_id: The finding ID

ParametersJSON Schema
NameRequiredDescriptionDefault
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a mutation ('reset') but says nothing about what state change occurs, whether it is reversible, what permissions are required, or what happens to related duplicate records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and brief, but the boilerplate 'Args:' block merely repeats the schema field and adds no information, so part of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one required param) and an output schema exists, so return values need not be explained. However, key behavioral context for a mutation tool — effect, reversibility, permissions — is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate for the undocumented parameter, but it only restates 'finding_id: The finding ID' — no format, scope, or retrieval hint beyond the schema's own 'Finding Id' title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Reset the duplicate status of a finding.' An agent can identify the operation, though it does not contrast itself against closely related siblings like close_finding_duplicate or get_finding_duplicates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as close_finding_duplicate, nor any preconditions. The agent must infer the usage context entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_engagementB

Update an existing engagement (partial update).

Args: engagement_id: The engagement ID name: New name status: New status (Not Started, In Progress, Completed) description: New description target_start: New target start date target_end: New target end date tags: Replace tags

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
tagsNo
statusNo
target_endNo
descriptionNo
target_startNo
engagement_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description should carry the full behavioral burden. It does disclose two useful traits: the update is partial (unmentioned fields are untouched) and tags are replaced rather than appended. However, it says nothing about permission requirements, whether status changes trigger side effects, or reversibility, which matters for a mutation tool with zero 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence plus a compact Args list; nothing is padded. The per-parameter lines are terse, though a few (e.g. 'New name') are near-tautological rather than adding real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the parameter surface is fully covered. What is missing is the operational context an agent needs before mutating an engagement: permissions, side effects of a status change, and how this tool relates to close_engagement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: every one of the 7 parameters is described, including the status enum values (Not Started, In Progress, Completed) and the replace-not-append semantics of tags. It falls short of a 5 only because date formats for target_start/target_end are left unspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('engagement') and adds the meaningful qualifier 'partial update', so the agent knows supplied fields alone are changed. It does not distinguish itself from close_engagement, which also mutates an engagement, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to reach for this tool versus close_engagement (which also changes engagement state) or update_organization/update_product. There are no prerequisites, no 'use this when...' framing, and no routing to alternatives despite a crowded sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_findingC

Update an existing finding (partial update).

Args: finding_id: The finding ID title: New title severity: New severity description: New description mitigation: New mitigation text impact: New impact text active: Set active status verified: Set verified status is_mitigated: Set mitigated status tags: Replace tags

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleNo
activeNo
impactNo
severityNo
verifiedNo
finding_idYes
mitigationNo
descriptionNo
is_mitigatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. '(partial update)' usefully implies that only supplied fields are modified and the rest are left untouched, but it says nothing about required permissions, whether changes are reversible, whether clearing a field is possible, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is correctly front-loaded in one sentence, and the following Args block is compact. But the Args list largely duplicates the schema property titles, so several lines do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. The description names every parameter, but for a 10-parameter mutation with zero annotations and zero schema descriptions it should say more about side effects, permissions, and how partial updates interact with existing values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does list all ten parameters. However most entries are tautological restatements ('title: New title', 'severity: New severity'), with only 'Replace tags' (replacement vs. append) and 'Set active/verified/mitigated status' adding genuine meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Update an existing finding') and adds the meaningful qualifier '(partial update)'. It is distinguishable from create_finding/get_finding/delete_finding by the verb alone, but it never names or routes away from overlapping siblings like verify_finding, close_finding, or accept_risk.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives. An agent cannot tell from this text when to call update_finding versus verify_finding, close_finding, reopen_finding, or accept_risk, all of which touch the same finding entity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_organizationB

Update an organization (partial update).

Args: organization_id: The organization ID name: New name description: New description

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
descriptionNo
organization_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose a genuine behavioral trait — that this is a partial update, so omitted fields are presumably left unchanged — which is more than the annotations provide. However, it says nothing about permission requirements, whether null values clear a field, side effects, or reversibility for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded: the purpose line comes first and the arg list is compact. No wasted prose, though the arg list is close to redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a mutation tool with zero annotation coverage, the description is thin on the behavioral context an agent needs (permissions, null handling, partial-update semantics), making it only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it only restates parameter names ('organization_id: The organization ID', 'name: New name'). It conveys that name and description are the mutable fields but adds no format, constraint, or optionality meaning beyond what the schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an organization') and adds the qualifier '(partial update)', so the operation is unambiguous. It does not distinguish itself from sibling write tools like create_organization or delete_organization beyond the verb, but the name/verb pairing is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus the other organization tools (create_organization, get_organization, delete_organization). The '(partial update)' note implies you can supply a subset of fields, but prerequisites such as required permissions or when an update is appropriate are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_productB

Update an existing product (partial update).

Args: product_id: The product ID name: New name description: New description lifecycle: New lifecycle stage business_criticality: New business criticality tags: Replace tags

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
tagsNo
lifecycleNo
product_idYes
descriptionNo
business_criticalityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose two genuinely useful traits: the update is partial, and 'tags: Replace tags' warns that tags are overwritten rather than merged. However, it says nothing about permission requirements, what passing null does to a field, or error behavior for invalid lifecycle/criticality values, so coverage is incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence is front-loaded and the parameter list is scannable with no filler prose. The Args block largely echoes schema property names, but given the schema carries no descriptions at all, that duplication is doing some real work rather than being pure waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. But for a mutation tool with zero annotations and a partial-update contract, the description should say more about permission requirements, null-field semantics, and valid lifecycle values — an agent could call this correctly but not confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only param documentation — and it does name all six parameters. But most entries merely restate the schema title ('New name', 'The product ID'), and it gives no allowed values for lifecycle or business_criticality, which are unbounded strings in the schema. Only the tags 'Replace' note adds meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an existing product') and adds the scope qualifier '(partial update)', so an agent immediately knows this is a mutation, not a create/delete/list. It does not explicitly name or distinguish itself from siblings like create_product or delete_product, but the verb+resource pairing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites (e.g. admin or product-edit permissions needed), and no routing to alternatives. The '(partial update)' parenthetical implies only supplied fields change, but that is inference rather than stated guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_risk_acceptanceB

Update a risk acceptance (partial update, e.g. extend expiration).

Args: risk_acceptance_id: The risk acceptance ID expiration_date: New expiration date (YYYY-MM-DD or ISO datetime) decision: Risk treatment decision code (A, V, M, F, T) decision_details: Details about the decision recommendation: Security recommendation code (A, V, M, F, T) recommendation_details: Details about the recommendation reactivate_expired: Reactivate findings on expiration restart_sla_expired: Restart SLA on expiration

ParametersJSON Schema
NameRequiredDescriptionDefault
decisionNo
recommendationNo
expiration_dateNo
decision_detailsNo
reactivate_expiredNo
risk_acceptance_idYes
restart_sla_expiredNo
recommendation_detailsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. 'Partial update' is a genuine disclosure that unspecified fields are preserved, which is valuable. However, it says nothing about required permissions, whether the change is reversible, or the side effects implied by reactivate_expired/restart_sla_expired flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-sentence summary followed by a compact Args list. Given 0% schema coverage, enumerating the parameters is justified rather than redundant, and there is little obvious waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. The parameter documentation is adequate, but for a mutation tool with no annotations and a crowded sibling set it stops short on authorization context and usage routing, leaving an agent under-informed about when and how safely to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all 8 parameters, gives the allowed decision/recommendation codes (A, V, M, F, T), and specifies the expiration_date format. This adds substantial meaning the raw schema lacks, though the A/V/M/F/T codes themselves remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Update' plus resource 'risk acceptance', and it explicitly flags that this is a partial update. It distinguishes itself from list/get/create/delete_risk_acceptance by virtue of the verb, but does not name any sibling to differentiate from the closely-related expire/reinstate/accept tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'e.g. extend expiration' hints at a use case, but there is no guidance on when to choose this over the many adjacent siblings such as expire_risk_acceptance, reinstate_risk_acceptance, or accept_risk. An agent must infer routing entirely on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_system_settingsC

Update system settings (partial update).

Args: settings_id: Settings ID (usually 1) **kwargs: Key-value pairs of settings to update

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes
settings_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the update is partial, which is genuinely useful, but says nothing about required permissions, whether changes are reversible, validation of keys, or side effects for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded, with the key behavior ('partial update') stated first. The Args block is somewhat boilerplate but mirrors the parameters cleanly without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and the tool is not deeply complex. But for a zero-annotation mutation with 0% schema coverage and an open-ended kwargs parameter, the description omits the acceptable setting keys and any permission/side-effect context an agent would need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description partially compensates by documenting settings_id ('usually 1') and describing kwargs as key-value pairs to update. However, it never enumerates which settings keys are valid or what types they take, leaving the free-form kwargs effectively undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update system settings') and adds the useful qualifier 'partial update', so the agent knows existing values are preserved. It doesn't explicitly differentiate from the sibling get_system_settings, but the read/write verb split makes the distinction clear enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no mention of the get_system_settings counterpart or any preconditions. The '(partial update)' note hints at behavior but not at when this tool should be chosen.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_testC

Update an existing test (partial update).

Args: test_id: The test ID title: New title description: New description version: New version tags: Replace tags

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleNo
test_idYes
versionNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It confirms the tool mutates an existing test and that updates are partial, but it doesn't state permission requirements, whether omitted fields are unchanged or cleared, or how concurrent edits are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a clear one-line purpose, then a compact parameter list. No filler sentences, though the 'Args:' block format is functional rather than polished.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. For a 5-parameter mutation tool with no annotations and 0% schema coverage, the description gives adequate but thin coverage, lacking permission, partial-update semantics, and error detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does list and briefly explain all five parameters (test_id, title, description, version, tags). However, the explanations are terse and don't clarify null vs omitted semantics, which matters since many fields default to null.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (test), and clarifies scope with 'partial update'. Siblings like create_test, get_test, delete_test, list_tests are distinguishable by verb, though the description does not explicitly differentiate itself from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as create_test or the finding update tools. The 'partial update' note implies only fields to change need to be supplied, but there is no explicit when/when-not or mention of siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_userC

Update a user (partial update).

Args: user_id: The user ID first_name: New first name last_name: New last name email: New email is_active: Set active status

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
user_idYes
is_activeNo
last_nameNo
first_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. The '(partial update)' note is valuable, implying unprovided fields are left unchanged, but there is no mention of permission requirements, side effects (e.g., email re-verification), reversibility, or failure behavior for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line, followed by a compact Args list. It is appropriately sized with minimal waste, though the parameter descriptions are near-redundant with their names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the partial-update note clarifies mutation scope. Still, as an unannotated mutation tool with 0% schema coverage, it omits permission and side-effect context an agent would need to call it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does list all five parameters with brief meanings (first_name, last_name, email, is_active, user_id). However, the glosses are terse tautologies of the parameter names and add little format or constraint detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Update') and resource ('a user'), and the '(partial update)' qualifier adds useful precision. It is clearly distinguishable from siblings like create_user and delete_user by name, though it does not explicitly differentiate itself from them in text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives (get_user, create_user, delete_user), nor any prerequisites such as required permissions. Only the implicit 'partial update' semantics hint at appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_findingC

Mark a finding as verified.

Args: finding_id: The finding ID to verify

ParametersJSON Schema
NameRequiredDescriptionDefault
finding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. 'Mark ... as verified' implies a state mutation, but the description does not disclose the state transition, permission requirements, idempotency, or whether an unverify/reopen exists. Only the implied mutation itself is conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded, with the core action in the first sentence. The 'Args:' block is redundant with the schema but does not bloat the text unreasonably.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, but for a mutation tool with zero annotations the description should cover state effects, prerequisites, and the verified/unverified lifecycle. None of that is present, leaving the definition thin for a lifecycle-mutating operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single parameter. Instead it merely restates the schema property ('The finding ID to verify' vs. the schema's 'Finding Id') without adding type, format, or lookup guidance. It adds no meaning beyond the structured field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Mark a finding as verified'), which is distinguishable from sibling operations like close_finding or accept_risk. However, it never explains what 'verified' means in this domain (e.g., triage confirmation vs. true-positive validation), so differentiation rests on the verb alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given: it does not say in which finding state verification is valid, whether it is reversible, or which sibling (close_finding, accept_risk, reopen_finding) is appropriate instead. The agent must infer all of this.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 78 tool updatesv0.1.0
    • First observedaccept_risk
    • First observedaccept_risks_vulnerability
    • First observedadd_engagement_note
    • First observedadd_finding_metadata
    • First observedadd_finding_note
    • First observedadd_test_note
    • First observedclose_engagement
    • First observedclose_finding
    • First observedclose_finding_duplicate
    • First observedclose_finding_false_positive
    • First observedclose_finding_mitigated
    • First observedcreate_engagement
    • First observedcreate_finding
    • First observedcreate_jira_instance
    • First observedcreate_organization
    • First observedcreate_product
    • First observedcreate_risk_acceptance
    • First observedcreate_test
    • First observedcreate_user
    • First observeddelete_engagement
    • First observeddelete_finding
    • First observeddelete_organization
    • First observeddelete_product
    • First observeddelete_risk_acceptance
    • First observeddelete_test
    • First observeddelete_user
    • First observedexpire_risk_acceptance
    • First observedget_celery_queue_details
    • First observedget_celery_status
    • First observedget_current_user
    • First observedget_endpoint
    • First observedget_engagement
    • First observedget_finding
    • First observedget_finding_duplicates
    • First observedget_jira_instance
    • First observedget_organization
    • First observedget_product
    • First observedget_risk_acceptance
    • First observedget_system_settings
    • First observedget_test
    • First observedget_user
    • First observedimport_scan
    • First observedlist_endpoint_status
    • First observedlist_endpoints
    • First observedlist_engagement_notes
    • First observedlist_engagements
    • First observedlist_finding_metadata
    • First observedlist_finding_notes
    • First observedlist_findings
    • First observedlist_jira_finding_mappings
    • First observedlist_jira_instances
    • First observedlist_jira_projects
    • First observedlist_note_types
    • First observedlist_notifications
    • First observedlist_organizations
    • First observedlist_products
    • First observedlist_risk_acceptances
    • First observedlist_sla_configurations
    • First observedlist_test_notes
    • First observedlist_test_types
    • First observedlist_tests
    • First observedlist_users
    • First observedpurge_celery_queue
    • First observedpurge_celery_task
    • First observedreimport_scan
    • First observedreinstate_risk_acceptance
    • First observedremove_finding_note
    • First observedreopen_finding
    • First observedreset_finding_duplicate_status
    • First observedupdate_engagement
    • First observedupdate_finding
    • First observedupdate_organization
    • First observedupdate_product
    • First observedupdate_risk_acceptance
    • First observedupdate_system_settings
    • First observedupdate_test
    • First observedupdate_user
    • First observedverify_finding

TDQS

C2.9/5.0

Scored across 78 tools

Disambiguation3/5

Most tools are clearly distinct by resource and action (e.g., list_products vs get_product). However, the closure tools are heavily overlapping: close_finding, close_finding_false_positive, close_finding_mitigated, and close_finding_duplicate all serve the same core purpose with different levels of abstraction. Similarly, accept_risk, accept_risks_vulnerability, and create_risk_acceptance overlap, requiring agents to choose carefully.

Naming Consistency4/5

The naming is mostly consistent with a verb_noun pattern (list_products, create_product, delete_product). Some deviations exist, such as import_scan and reimport_scan (no noun), and tools like get_current_user follow the pattern. The heavy use of 'finding' variations (add_finding_metadata, close_finding_duplicate) is predictable but occasionally verbose.

Tool Count2/5

With 78 tools, the server is far beyond the recommended 3-15 range for a single MCP server. This is an extreme mismatch that makes it difficult for an agent to navigate and increases the risk of misselection. While the domain (DefectDojo) is complex, the count is excessive and could be split into multiple focused servers.

Completeness4/5

The tool surface covers the core domain comprehensively: products, engagements, tests, findings, users, risk acceptances, and JIRA integrations. Minor gaps exist, such as no explicit tool to list all available scan types (list_test_types exists but may not cover external scanners), and some bulk operations are missing (e.g., bulk update findings). However, most CRUD operations are present.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides a Model Context Protocol server implementation that allows AI agents and other MCP clients to programmatically interact with DefectDojo, a vulnerability management tool, for managing findings, products, and engagements.
    11
    15
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server providing security vulnerability intelligence tools including CVE lookup, EPSS scoring, CVSS calculation, exploit detection, and Python package vulnerability checking.
    8
    9
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for DefectDojo vulnerability management, exposing 24 tools for managing products, engagements, tests, findings, scan imports, and finding lifecycle through the Model Context Protocol.
    24
    MIT