add_workflow_schedule
Add a cron-based schedule to an automation so it runs automatically at the specified times.
Investigate a Kubernetes security question end to end — which containers are running, what CVEs sit in their images, who shelled into a pod, and what the runtime behaviour looked like at the time.
LABSCO SUMMARY
Plenty of tools will tell you which images carry which vulnerabilities. What is harder to get into a conversation is what a container actually did — the processes it spawned, how that compares to its baseline, and who opened a shell into the pod according to the audit log. Having those beside the vulnerability data is what turns a triage question into one session rather than three consoles. Two supporting pieces matter more than they look: RadQL exposes its own data types and valid filter values, so a query is constructed against reality rather than guessed, and ignoring a CVE is a recorded disposition you can list back rather than a silent suppression.
A client for RAD Security's Kubernetes and cloud security platform, spanning runtime inventory, vulnerability management, findings triage, automation workflows, a knowledge base, dashboards, and a query language over the underlying data.
A RAD Security account and an API access key created in its console. RAD Security runs the server for you at https://api.rad.security/mcp/ over Streamable HTTP — the trailing slash matters — with the credential sent as Bearer <access_key_id>:<secret_key>:<account_id>. Every request is authenticated against the RAD Security API and nothing is stored server-side. A short-lived session-token form also works but expires, so an access key is the right choice for anything long-lived. Client config differs in small ways worth checking: VS Code uses a servers key, Gemini CLI uses httpUrl, and Cline wants the type spelled streamableHttp.
One command plus a key — claude mcp add --transport http rad-security https://api.rad.security/mcp/ --header "Authorization: Bearer <access_key_id>:<secret_key>:<account_id>"
USE CASES
Read the inbox item, look at what the container actually ran, and compare it against its baseline.
The audit log answer comes back directly rather than through a log query you have to write.
The most vulnerable images ranked, then the CVEs in one of them filtered by severity.
Ignore the CVE or mark the item, and read the dispositions back later to see what was accepted and why.
List the data types and their valid filter values first, then run the query rather than guessing at the schema.
Build the workflow, schedule it, and check the runs it produced.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
add_workflow_scheduleAdd a cron-based schedule to an automation so it runs automatically at the specified times.
create_custom_workflowCreate a new automation (a Windmill workflow) from a YAML definition. Pass the YAML document itself as a string, not a file path. It is validated server-side before deployment; on failure nothing is deployed and the errors are returned. Returns the new automation WITHOUT echoing the definition back — use id from the result when referring to it, and get_workflow if you need to read the definition.
create_dashboardCreate a dashboard for the account. Build rows from the widget templates (list_widget_templates / get_widget_template) so the visualization and query shapes are valid.
get_cluster_detailsGet detailed information about a specific Kubernetes cluster managed by RAD Security
get_container_detailsGet detailed information about a container secured by RAD Security
get_container_llm_analysisGet LLM analysis of a container's process tree
get_containers_baselinesGet runtime baselines for multiple containers
get_containers_process_treesGet process trees for multiple containers
get_dashboardGet detailed information about a specific dashboard
get_dashboard_templateGet detailed information about a specific dashboard template
get_image_sbomGet the SBOM of a container image
get_inbox_item_detailsGet detailed information about a specific inbox item
get_k8s_resource_detailsGet the latest manifest of a Kubernetes resource
get_knowledge_base_document_contentGet the FULL text content of a knowledge base document (extracted text for PDF/DOCX, the raw file for markdown/plaintext/CSV). Use this to read or analyze a whole document rather than the excerpts search_knowledge_base returns. Find document IDs via list_knowledge_base_documents or search_knowledge_base results
get_knowledge_base_document_download_urlGet a time-limited download URL for the ORIGINAL document file (any format, including PDF/DOCX binaries). Use when you need the original file itself — e.g. to fetch it into a sandbox for structural parsing (tables, layout), or when get_knowledge_base_document_content reports no text available. For reading text, prefer get_knowledge_base_document_content
get_top_vulnerable_imagesGet the most vulnerable images from your account
get_widget_templateGet detailed information about a specific widget template
get_workflowGet detailed information about a specific workflow by ID. It contains the workflow definition, default arguments, and schema how to run the workflow
get_workflow_runGet detailed information about a specific workflow run
ignore_cveIgnore a CVE for this account so it no longer appears in vulnerability reporting. Use for confirmed false positives, accepted risks, or won't-fix decisions. Do NOT use for remediated CVEs — those drop off automatically on the next scan.
list_clustersList Kubernetes clusters managed by RAD Security
list_containersList containers secured by RAD Security with optional filtering by image name, image digest, namespace, cluster_id, or free text search
list_cve_dispositionsList active CVE dispositions (ignored / false positive) for this account, with reason and author.
list_dashboard_templatesList dashboard templates with optional filtering by category
list_dashboardsList dashboards for the account
list_external_integrationsList external integrations configured for the tenant (e.g., Slack, AWS CloudTrail, Okta). Returns integration details including capabilities, configuration, mcp support and sync status.
list_image_vulnerabilitiesList vulnerabilities in a container image with optional filtering by severity
list_imagesList container images with optional filtering by page, page size, sort, and search query
list_inbox_itemsList inbox items with optional filtering by any field. Multiple filters can be combined eg. 'search:cve-2024-12345 and severity:high'
list_k8s_resourcesList Kubernetes resources with optional filtering by namespace, resource types, and cluster
list_knowledge_base_collectionsList all collections in your organization's knowledge base. Collections are used to organize and categorize documents
list_knowledge_base_documentsList documents in your organization's knowledge base with optional filtering by collections, file type, or status
list_security_findingsList security findings with optional filtering by types, severities, sources, and status
list_widget_templatesList widget templates with optional filtering by visualization type and category
list_workflow_runsList workflow runs with optional filtering by workflow ID
list_workflow_schedulesList workflow schedules with optional filtering by workflow ID
list_workflowsList all workflows
mark_inbox_item_as_false_positiveMark an inbox item as a false positive with a reason
query_knowledge_base_documentQuery a CSV document from the knowledge base using natural language. IMPORTANT: This tool ONLY works with CSV documents. Use list_knowledge_base_documents with filters='file_type:csv' to find CSV document IDs (search_knowledge_base results also contain document IDs). Results are returned as a markdown table
radql_batch_queryExecute multiple RadQL queries in parallel for efficiency. Useful for fetching related data from different data types simultaneously (e.g., container details + vulnerabilities + network connections).
radql_get_type_metadataGet schema/metadata for a specific RadQL data type. Shows available fields, data types, which fields can be filtered/searched, and provides query examples. Call this AFTER radql_list_data_types to understand how to query a specific data type.
radql_list_data_typesList all available RadQL data types (discovery). ALWAYS call this FIRST before using other RadQL tools to discover what data is available to query. Returns data types like 'containers', 'kubernetes_resources', 'inbox_items', 'cloud_resources', 'cloud_benchmarks', 'cloud_benchmark_summaries', etc. with descriptions.
radql_list_filter_valuesList possible values for a filter field (e.g., namespace list, cluster list, severity values). Useful for building dynamic filters when you need to know available enum-like values. Call this when constructing filters that need specific values.
radql_queryExecute RadQL queries for security investigations. Supports: list (filter/search), get_by_id (single item), stats (aggregations).
WORKFLOW: radql_list_data_types -> radql_get_type_metadata -> radql_query
COMMON FIELDS BY DATA TYPE: containers: name, image_name, image_repo, owner_kind, cluster_id, created_at Example: image_name:*nginx* AND owner_kind:Pod
finding_groups: type, source_kind, source_name, rule_title, severity, event_timestamp Types: k8s_misconfiguration, k8s_audit_logs_anomaly Example: type:k8s_misconfiguration AND severity:critical
inbox_items: severity (High|Medium|Low), type, title, archived, false_positive, created_at Example: severity:High AND archived:false
kubernetes_resources: kind, name, namespace, cluster_id, owner_kind, created_at Example: kind:Deployment AND namespace:production
CLOUD RESOURCES & COMPLIANCE (use these RadQL data types instead of dedicated cloud tools): cloud_resources: cloud_provider, cloud_account_id, resource_type, resource_name, resource_id, resource_json, last_seen_at Example: cloud_provider:aws AND resource_type:aws_iam_policy
cloud_benchmark_summaries: cloud_provider, cloud_account_id, benchmark_id, title, description, fail_count, pass_count, total_count, last_seen_at Example: cloud_provider:aws AND fail_count>0
cloud_benchmarks: cloud_provider, cloud_account_id, benchmark_id, control_id, control_title, severity, status, reason, resource_id, last_seen_at Example: status:fail AND benchmark_id:*cis*
CRITICAL QUOTING RULES: MUST quote when value contains:
OK to leave unquoted:
For complete schema: call radql_get_type_metadata with target data_type
radql_query_builderHelper tool to build RadQL queries programmatically from structured conditions. Useful when you need to construct complex filter or stats queries from structured inputs.
run_workflowRun a workflow with optional argument overrides
search_knowledge_baseSearch your organization's knowledge base to find relevant uploaded documents, procedures, reports, and other content using natural language queries
unignore_cveRemove an account-wide CVE disposition, restoring the CVE to vulnerability reporting.
update_custom_workflowUpdate an existing automation with new YAML. Only automations created via create_custom_workflow can be updated. Returns the updated automation without echoing the definition back.
update_dashboardUpdate an existing dashboard. Omitted fields are left unchanged, so a small edit (a title, one row) does not require resending the whole dashboard.
update_security_finding_statusUpdate the status of a security finding
who_shelled_into_podGet k8s audit logs with information about users who shelled into a pod
BEFORE YOU INSTALL
52 tools when we connected. Every toolkit is on by default. Narrow the set with X-Rad-Toolkits or X-Rad-Exclude-Toolkits (INCLUDE_TOOLKITS or EXCLUDE_TOOLKITS when self-hosted), or set X-Rad-Readonly: true to drop the write tools.
CONTEXT COST
Rated by the size of the 52 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
claude mcp add --transport http rad-security https://api.rad.security/mcp/ \
--header "Authorization: Bearer <YOUR_ACCESS_KEY_ID>:<YOUR_SECRET_KEY>:<YOUR_ACCOUNT_ID>"https://api.rad.security/mcp/Add this hosted endpoint to your MCP client using the credentials listed under Requirements.
{
"mcpServers": {
"rad-security": {
"type": "http",
"url": "https://api.rad.security/mcp/",
"headers": {
"Authorization": "Bearer <YOUR_ACCESS_KEY_ID>:<YOUR_SECRET_KEY>:<YOUR_ACCOUNT_ID>"
}
}
}
}{
"servers": {
"rad-security": {
"type": "http",
"url": "https://api.rad.security/mcp/",
"headers": {
"Authorization": "Bearer <YOUR_ACCESS_KEY_ID>:<YOUR_SECRET_KEY>:<YOUR_ACCOUNT_ID>"
}
}
}
}{
"mcpServers": {
"rad-security": {
"httpUrl": "https://api.rad.security/mcp/",
"headers": {
"Authorization": "Bearer <YOUR_ACCESS_KEY_ID>:<YOUR_SECRET_KEY>:<YOUR_ACCOUNT_ID>"
}
}
}
}{
"mcpServers": {
"rad-security": {
"type": "streamableHttp",
"url": "https://api.rad.security/mcp/",
"headers": {
"Authorization": "Bearer <YOUR_ACCESS_KEY_ID>:<YOUR_SECRET_KEY>:<YOUR_ACCOUNT_ID>"
}
}
}
}{
"mcpServers": {
"rad-security": {
"serverUrl": "https://api.rad.security/mcp/",
"headers": {
"Authorization": "Bearer <YOUR_ACCESS_KEY_ID>:<YOUR_SECRET_KEY>:<YOUR_ACCOUNT_ID>"
}
}
}
}{
"mcpServers": {
"rad-security": {
"command": "npx",
"args": [
"-y",
"@rad-security/mcp-server"
],
"env": {
"RAD_SECURITY_ACCESS_KEY_ID": "<YOUR_RAD_SECURITY_ACCESS_KEY_ID>",
"RAD_SECURITY_SECRET_KEY": "<YOUR_RAD_SECURITY_SECRET_KEY>",
"RAD_SECURITY_ACCOUNT_ID": "<YOUR_RAD_SECURITY_ACCOUNT_ID>"
}
}
}
}