Public leaderboard

Public assessment

rad-security/mcp-server (@rad-security/mcp-server)

rad-security-mcp-server · v0.0.40 · scanned

What changed in the harness

Selection accuracy 92→98, token cost down 0%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

19.0 / 30

19.0 out of 30
03Economics

14.1 / 20

14.1 out of 20
04Discoverability

10.8 / 20

10.8 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

42 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
list_containers
no_return_description
List containers secured by RAD Security, optionally filtered by image name, image digest, namespace, cluster_id, or free-text search. Returns the matching containers with their details, paginated by offset and limit.
get_container_details
no_return_description
Get detailed information about a single container secured by RAD Security, identified by its container_id. Returns the container's full metadata, including image and runtime details.
list_clusters
name_restates_behavior no_return_description
List the Kubernetes clusters managed by RAD Security, paginated with page and page_size. Returns each cluster with its ID and metadata so you can use cluster_id in other tools.
get_cluster_details
no_return_description
Get detailed information about a specific Kubernetes cluster managed by RAD Security, identified by its cluster_id. Returns the cluster's configuration and status metadata.
who_shelled_into_pod
params_unexplained no_return_description
Get Kubernetes audit logs of users who shelled into a pod. Filter by pod name, namespace, cluster_id, and time range (from_time/to_time) to narrow the search. Returns the matching audit events, paginated by page and limit.
list_images
no_return_description
List container images in the account, optionally filtered by page, page size, sort order, image filters (e.g., eol:reached, name:nginx, tag:1.26.0), and free-text search. Returns the matching image records.
list_image_vulnerabilities
name_restates_behavior no_return_description
List the vulnerabilities found in a container image, identified by its digest. Optionally filter by severity levels. Returns the matching vulnerabilities, paginated by page and page_size.
get_top_vulnerable_images
name_restates_behavior no_return_description
Get the most vulnerable images in the account, ranked by exposure so you can prioritize remediation. Returns a ranked list of images with their vulnerability counts.
get_image_sbom
name_restates_behavior no_return_description
Get the Software Bill of Materials (SBOM) for a container image, identified by its digest. Returns the image's components, dependencies, and versions.
ignore_cve
no_return_description
Ignore a CVE for this account so it no longer appears in vulnerability reporting. Optionally scope the ignore to a cluster_id, image_digest, or image_repo/image_name pair, and record a reason for audit. Returns a confirmation of the created disposition. Use for confirmed false positives, accepted risks, or won't-fix decisions; do not use for remediated CVEs, which drop off automatically.
unignore_cve
no_return_description
Remove the account-wide ignore/disposition for a CVE (by cve_name), restoring it to vulnerability reporting. Returns a confirmation of the removed disposition.
list_cve_dispositions
name_restates_behavior no_return_description
List the active CVE dispositions (ignored/false positive) for this account. Each entry includes the CVE, the reason, and the author, so you can review and undo past ignore decisions.
get_k8s_resource_details
no_return_description
Get the latest manifest of a Kubernetes resource in a cluster, identified by cluster_id and resource_uid. Returns the resource's manifest and metadata.
list_k8s_resources
no_return_description
List Kubernetes resources, optionally filtered by namespace, resource kinds (e.g., Deployment, ServiceAccount, Pod), and cluster_id. Returns the matching resources, paginated by page and page_size.
get_containers_process_trees
name_restates_behavior no_return_description
Get the process tree (parent-child process hierarchy) for each container in container_ids, limited by processes_limit per container. Useful for investigating container runtime behavior. Returns the process trees keyed by container.
get_containers_baselines
name_restates_behavior no_return_description
Get the runtime baseline for each container in container_ids, describing the expected behavior RAD has learned for it. Returns the baseline descriptions keyed by container.
get_container_llm_analysis
name_restates_behavior no_return_description
Get an LLM-generated analysis of a container's process tree, summarizing what the container does and flagging notable or anomalous behavior. Returns the analysis text for the given container_id.
list_security_findings
name_restates_behavior no_return_description
List security findings, optionally filtered by finding types (k8s_misconfiguration, runtime_alert, k8s_audit_logs_anomaly), severities, source kinds/types/names/namespaces, status, and time range. Returns the matching findings, paginated by limit.
update_security_finding_status
name_restates_behavior no_return_description
Update the status of a security finding (open, closed, or ignored) by its id. Returns the updated finding.
mark_inbox_item_as_false_positive
name_restates_behavior no_return_description
Mark an inbox item as a false positive (or clear the mark with value=false) and record the reason. Returns the updated inbox item.
list_inbox_items
no_return_description
List inbox items, optionally filtered by any field using a filter query string (e.g., search:cve-2024-12345 and severity:high). Returns the matching inbox items, paginated by offset and limit.
get_inbox_item_details
name_restates_behavior no_return_description
Get the full details of a specific inbox item by its inbox_item_id, including its content and metadata such as title and severity. Returns the inbox item record.
list_workflows
name_restates_behavior no_return_description
List all workflows available in the account. Returns each workflow's ID and metadata; use get_workflow for full definitions and run parameters.
get_workflow
no_return_description
Get a specific workflow by its workflow_id. Returns the workflow definition, default arguments, and the schema describing how to run it.
list_workflow_runs
name_restates_behavior no_return_description
List the execution runs of a specific workflow by workflow_id. Returns each run's ID, status, and execution metadata.
get_workflow_run
name_restates_behavior params_unexplained no_return_description
Get detailed information about a specific workflow run, identified by workflow_id (the parent workflow) and run_id (the specific run to fetch). Returns the run's status, inputs, and outputs.
run_workflow
name_restates_behavior no_return_description
Run a workflow with its workflow_id, optionally overriding arguments via args. When async is true (default), returns immediately with the run ID; when false, waits for completion and returns the run results.
list_workflow_schedules
name_restates_behavior no_return_description
List the schedules configured for a specific workflow by workflow_id. Returns each schedule's cadence and settings.
search_knowledge_base
no_return_description
Search your organization's knowledge base for relevant uploaded documents, procedures, reports, and other content using a natural language query. Optionally restrict to specific collections or document_ids, and tune results with top_k and min_score. Returns the most relevant document excerpts with scores and source document IDs.
list_knowledge_base_collections
name_restates_behavior no_return_description
List all collections in your organization's knowledge base, which are used to organize and categorize documents. Returns the collections, paginated by offset and limit.
list_knowledge_base_documents
name_restates_behavior no_return_description
List documents in your organization's knowledge base, optionally filtered by collections, file_type (pdf, markdown, plaintext, csv), or status (ready, processing, error). Returns the matching documents with their IDs and metadata.
get_knowledge_base_document_download_url
no_return_description
Get a time-limited download URL for the original knowledge base document file (any format, including PDF/DOCX binaries). Use it to fetch the original file into a sandbox for structural parsing, or when extracted text is unavailable. Returns a signed, expiring URL.
radql_list_filter_values
no_return_description
List the possible values for a specific RadQL filter field (e.g., namespace, cluster_id, severity) on a data type, so you can build valid dynamic filters. Returns the distinct values available for the given data_type and filter_name.
radql_query
no_return_description
Execute RadQL queries for security investigations, supporting list (filter/search), get_by_id (single item), and stats (aggregations). Returns the matching records, a single item, or aggregation results, honoring limit/offset and optionally including relations. Follow the workflow radql_list_data_types -> radql_get_type_metadata -> radql_query and the quoting rules for valid queries.
radql_query_builder
params_unexplained no_return_description
Helper tool that builds a RadQL query string programmatically from structured filter conditions (field, operator, value), combined with AND/OR logic, and optionally an aggregation function with aggregate_field, group_by, and time_group. group_by lists the fields to group aggregation results by. Returns a ready-to-use query for radql_query.
radql_batch_query
no_return_description
Execute up to 10 RadQL queries in parallel, one per entry in queries, for example fetching container details, vulnerabilities, and network connections together. Returns the results of each query in the order given.
list_widget_templates
name_restates_behavior no_return_description
List widget templates, optionally filtered by visualization_type and category. Returns the matching widget templates with their configuration, paginated by offset and limit.
get_widget_template
name_restates_behavior params_unexplained no_return_description
Get a specific widget template by its widget_template_id (a template used to create dashboard widgets), returning its configuration and visualization properties.
list_dashboard_templates
name_restates_behavior no_return_description
List dashboard templates, optionally filtered by category. Returns the matching dashboard templates with their configuration, paginated by offset and limit.
get_dashboard_template
name_restates_behavior params_unexplained no_return_description
Get a specific dashboard template by its dashboard_template_id, returning its configuration and the widget templates it contains.
list_dashboards
name_restates_behavior no_return_description
List the dashboards for the account, paginated by offset and limit. Returns each dashboard's ID and metadata.
get_dashboard
name_restates_behavior params_unexplained no_return_description
Get a specific dashboard by its dashboard_id, returning its configuration, layout, and the widgets it contains.

Selection evidence

Confusable tool pairs.

11 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
get_workflow get_workflow_run medium Both 'get detailed information about a specific workflow/run'; a task like 'show me details about workflow X' is ambiguous as to whether the user wants the definition/schema or the results of an execution, so an agent may fetch the wrong object.
get_workflow_run run_workflow low Phrasing like 'give me the run of workflow X' could mean execute it (run_workflow) or retrieve an existing run's record (get_workflow_run, which needs a run_id the user may not have supplied), making the intended verb ambiguous.
list_workflows list_workflow_runs low 'Show me my workflows' is ambiguous between the definitions and their executions; a user asking for workflow activity might mean runs, and list_workflow_runs requires a workflow_id so an agent may fall back to list_workflows incorrectly.
list_workflows list_workflow_schedules low A request like 'which workflows are set to run' or 'list the workflows I have scheduled' could push an agent toward either listing workflows themselves or their schedules, since both tools are keyed to workflow_id and both involve the word workflow.
radql_query radql_query_builder medium Both names start with radql_query and both describe building/executing RadQL queries; a task like 'query for containers with critical severity' may select query_builder, which only constructs a query string and returns no results, instead of radql_query which executes it.
get_knowledge_base_document_content get_knowledge_base_document_download_url medium Both are 'get document X' tools differing only in extracted text vs original binary file; a user request to 'get/fetch/read document X' (e.g., a PDF) is genuinely ambiguous about whether they want the full text or the original file for parsing.
list_knowledge_base_collections list_knowledge_base_documents medium An under-specified task like 'show me what's in our knowledge base' fits both tools since collections organize documents and documents are the content; an agent may list collections when documents were intended or vice versa.
query_knowledge_base_document get_knowledge_base_document_content low A task like 'tell me what's in document X' could map to the CSV natural-language query tool or the full-text content tool; the intended tool only becomes clear if the user mentions it is a CSV or wants the entire document.
ignore_cve unignore_cve medium These are opposite polarity actions on the same CVE reporting state; a user request to change a CVE's reporting status (e.g., 'stop flagging this', 'make this one show up again', or 'remove the ignore') can send an agent to the wrong direction without careful reading.
get_containers_process_trees get_container_llm_analysis low A request to 'analyze what processes container X runs' could select the raw process-tree tool or the LLM-analysis-of-process-tree tool, since the llm tool's description references the process tree and both are container-process tools.
get_k8s_resource_details list_k8s_resources low A task like 'get me info about the deployments in cluster X' is ambiguous between fetching the latest manifest of one resource (needs a UID) and listing multiple resources by kind/namespace; an agent may pick the detail tool when enumeration is intended.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard