Prowler MCP server
Endpoint: https://mcp.prowler.com/mcp · Authentication: No auth
Searches the Prowler Hub cloud security check catalog and Prowler docs without credentials; Prowler Cloud findings, scans, and providers need a Prowler API key as a bearer token.
How do I authenticate?
Add the endpoint directly in your client. The catalog records no authentication requirement; no OAuth sign-in or API key is configured in this setup. The live server may change.
Authentication and connection guideConnection specification
- Remote endpoint
https://mcp.prowler.com/mcp- Browser access
- Not yet measured
- Declared MCP transport
- Streamable HTTP
- Live-validated MCP transport
- Streamable HTTP — Observed by the latest catalog validation
- Declared authentication
- No authentication
- Detected authentication
- No authentication detected or retained from publisher evidence
- Alternative authentication
- Bearer token
- Protocol lifecycle
- Stateful MCP · 2025-11-25
- Required header
Authorization— Optional Prowler API key for Prowler Cloud tools: Bearer <PROWLER_API_KEY>- Category
- Security
Product documentation · Source repository · Official listing documentation
Provider guidance
- Prowler labels the hosted MCP server a preview feature.
More Security MCP servers · Browse all MCP servers · Test this endpoint in the MCP Playground
Connect it
Live-validated endpoint: https://mcp.prowler.com/mcp · Streamable HTTP. No authentication is required by the catalog listing.
Agent prompt for Claude Code or Codex
Add the Prowler MCP server to my MCP client configuration and verify that it works. What it is: Searches the Prowler Hub cloud security check catalog and Prowler docs without credentials; Prowler Cloud findings, scans, and providers need a Prowler API key as a bearer token. Server URL: https://mcp.prowler.com/mcp Transport: Streamable HTTP (remote MCP server, no local install). Authentication: none. The server accepts connections without credentials. Tools (21, as last observed by mcptest): prowler_cloud_apply_organization_discovery, prowler_cloud_build_alert_rule_condition, prowler_cloud_bulk_set_scan_schedules, prowler_cloud_create_alert_recipient, prowler_cloud_create_alert_rule, prowler_cloud_create_finding_triage_note, prowler_cloud_create_organization, prowler_cloud_create_scan_configuration, prowler_cloud_delete_alert_recipient, prowler_cloud_delete_alert_rule, prowler_cloud_delete_finding_triage_note, prowler_cloud_delete_organization, prowler_cloud_delete_scan_configuration, prowler_cloud_delete_scan_schedule, prowler_cloud_discover_organization, prowler_cloud_get_alert_event, prowler_cloud_get_alert_recipient, prowler_cloud_get_alert_rule, prowler_cloud_get_finding_triage, prowler_cloud_get_organization, prowler_cloud_get_scan_configuration. Reference: https://mcptest.io/servers/prowler/ Steps: 1. Work out which MCP client I use (Claude Code, Codex, Cursor, VS Code or another) and add the server under the name "prowler" in that client's MCP configuration, user scope unless I ask otherwise. Claude Code: claude mcp add --transport http --scope user 'prowler' 'https://mcp.prowler.com/mcp' Codex: codex mcp add 'prowler' --url 'https://mcp.prowler.com/mcp' Other clients: use the setup for that client on the reference page. 2. Never write a credential value into a file that could be committed; reference an environment variable or the client's secret store, and ask me for any value you need. 3. Verify: connect to the server and call tools/list. Confirm the tools above are listed, and report any sign-in step I still have to complete.
Claude Code setup
Run in a terminal. This user-scoped entry is available across projects.
claude mcp add --transport http --scope user 'prowler' 'https://mcp.prowler.com/mcp'Codex CLI setup
Run in a terminal; Codex stores the entry in ~/.codex/config.toml.
codex mcp add 'prowler' --url 'https://mcp.prowler.com/mcp'Cursor setup
Add to .cursor/mcp.json for this project, or ~/.cursor/mcp.json for all projects.
{
"mcpServers": {
"prowler": {
"url": "https://mcp.prowler.com/mcp"
}
}
}VS Code setup
Add to .vscode/mcp.json, or run “MCP: Open User Configuration” for a private user-level entry.
{
"servers": {
"prowler": {
"type": "http",
"url": "https://mcp.prowler.com/mcp"
}
}
}Claude setup
Add the endpoint above in Claude:
- Customize > Connectors > Add custom connector
- Team/Enterprise: Organization settings > Connectors > Add > Custom > Web
Claude Desktop setup
Add the endpoint above in Claude Desktop:
- Remote: Customize > Connectors (same as claude.ai)
- Local: Settings > Developer > Edit Config, or Settings > Extensions for .mcpb files
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows), local servers only
ChatGPT setup
Add the endpoint above in ChatGPT:
- ChatGPT web: Plugins > Add custom MCP server, then configure authentication and accept the risk warning
Windsurf setup
Add the endpoint above in Windsurf:
~/.config/devin/mcp_config.json(%APPDATA%\devin\mcp_config.jsonon Windows),serverUrlorurl- Cascade panel > ... > MCPs > Open MCP config file
Gemini CLI setup
Add the endpoint above in Gemini CLI:
gemini mcp add --transport http <name> <url>~/.gemini/settings.json(user) or.gemini/settings.json(project),mcpServers
MCP SDK setup
Add the endpoint above in MCP SDK:
- Programmatic:
new Client(...).connect(new StreamableHTTPClientTransport(url))
Notes for every client
- Optional bearer token alternative: Store PROWLER_API_KEY in your operating system keychain, secret manager, or protected environment; never commit the value. The Authorization header syntax is Bearer <PROWLER_API_KEY>.
- Provider guidance: Prowler labels the hosted MCP server a preview feature.
Client compatibility
| Client | Status | Why |
|---|---|---|
| Claude Code | Supported | Claude Code supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
| Codex | Supported | Codex supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
| Cursor | Supported | Cursor supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
| VS Code | Supported | VS Code supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
| Claude | Supported | Claude supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
| Claude Desktop | Supported | Claude Desktop supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
| ChatGPT | Partial | Stateful routing needs operational care: ChatGPT can preserve MCP sessions, but the deployment must route a session consistently and retain its state. |
| Windsurf | Supported | Windsurf supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
| Gemini CLI | Supported | Gemini CLI supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
| MCP SDK | Supported | MCP SDK supports Streamable HTTP servers and servers without authentication or bearer-token headers. |
Computed from this server's validated transport, protocol and authentication against documented client support. Checks the catalog has not observed are not counted.
Latest validation evidence
- Validation status
- Online when last tested
- Validation checked at
- Oct 26, 2026 at 11:07 AM
- Validation detail
- Negotiated stateful MCP 2025-11-25 at https://mcp.prowler.com/mcp; detected transport streamable-http; authentication none
Tool inventory
What the catalog validator observed on at https://mcp.prowler.com/mcp without credentials. The live server may have changed since; connect in the Playground for the current list.
Tools provided by Prowler 100
21 of 100 shown; 79 omitted to keep the page bounded.
prowler_cloud_apply_organization_discoveryoutputSchema declaredApply a succeeded discovery: create/link Prowler providers for the selected accounts, subscriptions or projects and build the OU/management-group/folder hierarchy. WARNING: for AWS organizations, omitting `accounts` (or passing an empty list) onboards the ENTIRE organization — every discovered account. Always pass an explicit selection unless that is intended. For Azure, `subscriptions` is required and must be non-empty; for GCP, `projects` is required and must be non-empty. Items whose discovery `apply_status` was 'blocked' (e.g. the account already belongs to another organization) will be re
Input
accounts?: any, context: string, discovery_id?: any, organization_id: string, organizational_units?: any, projects?: any, subscriptions?: anyaccounts?: anyoptionalAWS only: accounts to onboard, e.g. [{"id": "123456789012", "alias": "Production"}] (alias optional). WARNING: omitting this onboards ALL discovered accounts.
context: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
discovery_id?: anyoptionalDiscovery to apply. Defaults to the most recent succeeded discovery for the organization.
organization_id: stringrequiredOrganization UUIDv4. Get it from prowler_cloud_list_organizations.
organizational_units?: anyoptionalAWS only: OUs to create as hierarchy nodes, e.g. [{"id": "ou-abcd-12345678"}]. Ancestor OUs are added automatically. Omitting this creates ALL discovered OUs.
projects?: anyoptionalGCP only, REQUIRED for GCP: projects to onboard, e.g. [{"project_id": "my-project", "alias": "Prod"}] (alias optional, 3-100 chars).
subscriptions?: anyoptionalAzure only, REQUIRED for Azure: subscriptions to onboard, e.g. [{"subscription_id": "00000000-0000-0000-0000-000000000000", "alias": "Prod"}] (alias optional, 3-100 chars). Only subscriptions whose discovered state is "Enabled" can be applied.
prowler_cloud_build_alert_rule_conditionoutputSchema declaredBuild and dry-run an alert-rule condition in one call. Nothing is persisted. This combines the two preparation steps for an alert rule: 1. SEED: translate a findings `filter_bag` into a condition DSL (skipped when you pass a `condition` directly). 2. PREVIEW: dry-run that condition against the latest scan data. Returns the ready-to-use `condition` (pass it straight to prowler_cloud_create_alert_rule / prowler_cloud_update_alert_rule) alongside: - `warnings`: filters dropped during seeding (empty when a `condition` was passed in). - `would_fire`: whether the condition would have fired against t
Input
condition?: any, context: string, filter_bag?: anycondition?: anyoptionalA pre-built condition DSL to validate directly instead of seeding one from a filter_bag (dict or JSON string). Use this to dry-run a condition you already have, e.g. one returned by prowler_cloud_get_alert_rule. Provide EITHER filter_bag OR condition, not both.
context: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
filter_bag?: anyoptionalFindings filter to translate into a rule condition, as a dict (or JSON string). Same shape as prowler_app_search_security_findings filters: keys are field names, values are a single value, a comma-separated string, or a list. Only these PORTABLE fields are kept in the condition: severity (critical|high|medium|low|informational), delta (new|changed), provider_type (aws|azure|gcp|...), check_id, categories, region, service, resource_type, resource_groups, resource_uid, provider_id, finding_group_id. Field names may be bare ('severity'), suffixed ('severity__in' / 'severity.in'), or wrapped ('fil
prowler_cloud_bulk_set_scan_schedulesoutputSchema declaredApply one scan schedule to MANY providers at once. This applies one COMPLETE schedule (scan_frequency + scan_hour required) and returns 'updated'/'failed' provider ids, not the schedule itself. For a single provider, or to make a partial edit such as pausing, use prowler_cloud_set_scan_schedule instead. Provide EITHER provider_ids OR provider_group_id (not both). Each provider is applied in its own transaction; the result reports 'updated' provider ids and 'failed' entries individually. Requires the `manage_scans` permission.
Input
context: string, provider_group_id?: any, provider_ids?: array, scan_day_of_month?: any, scan_day_of_week?: any, scan_enabled?: any, scan_frequency: string, scan_hour: integer, scan_interval_hours?: any, scan_timezone?: anycontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
provider_group_id?: anyoptionalApply to every provider in this provider group (UUIDv4). Mutually exclusive with provider_ids.
provider_ids?: arrayoptionalProviders to apply the scan schedule to, by UUIDv4. Mutually exclusive with provider_group_id.
scan_day_of_month?: anyoptionalDay of month (1-28) for MONTHLY.
scan_day_of_week?: anyoptionalDay of week for WEEKLY: 0=Sunday .. 6=Saturday.
scan_enabled?: anyoptionalWhether the applied schedule is enabled.
scan_frequency: stringrequiredCadence to apply to every targeted provider.
scan_hour: integerrequiredHour of day (0-23) in scan_timezone.
scan_interval_hours?: anyoptionalHours between scans for INTERVAL (minimum 24).
scan_timezone?: anyoptionalIANA timezone name, e.g. 'America/New_York'.
prowler_cloud_create_alert_recipientoutputSchema declaredRegister a new alert recipient email. SIDE EFFECT: this enqueues a confirmation email to the address. Requires the `manage_alerts` permission on the API key/role.
Input
context: string, email: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
email: stringrequiredRecipient email address to register.
prowler_cloud_create_alert_ruleoutputSchema declaredCreate a tenant-scoped alert rule. SIDE EFFECT: recipients that are not yet confirmed will receive a confirmation email. Requires the `manage_alerts` permission on the API key/role. Workflow: 1. Use prowler_cloud_build_alert_rule_condition to turn a findings filter into a validated, dry-run condition (returns the 'condition' plus any dropped-filter warnings). 2. Use this tool with that 'condition' to persist the rule.
Input
condition: any, context: string, description?: any, enabled?: boolean, name: string, recipient_emails?: array, trigger?: anycondition: anyrequiredCondition DSL that decides when the rule fires. Accepts a dict or JSON string. Build and validate it with prowler_cloud_build_alert_rule_condition, then pass the returned 'condition' here.
context: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
description?: anyoptionalOptional description.
enabled?: booleanoptionalWhether the rule is enabled (default True).
name: stringrequiredName for the alert rule (1-120 characters).
recipient_emails?: arrayoptionalEmail addresses to notify when the rule fires.
trigger?: anyoptionalWhen the rule is evaluated: after_scan, daily or both.
prowler_cloud_create_finding_triage_noteoutputSchema declaredAdd a new note to a finding's triage. A finding's triage can hold multiple notes. To edit an existing note use prowler_cloud_update_finding_triage_note; to remove one use prowler_cloud_delete_finding_triage_note. Requires the `manage_scans` permission on the API key/role.
Input
body: string, context: string, finding_uid: stringbody: stringrequiredNote text (1-500 chars).
context: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
finding_uid: stringrequiredStable finding UID.
prowler_cloud_create_organizationoutputSchema declaredRegister a cloud provider organization in Prowler, optionally storing its org-level credentials in the same call. Credentials are required before discovery can run, so providing them here is recommended. Idempotent: if an organization with the same org_type and external_id already exists (e.g. from an earlier onboarding attempt), it is reused instead of failing with a duplicate error — its credentials are then created or rotated — and the response reports `created: false`. IMPORTANT for AWS: discovery assumes an IAM role that must already be deployed via Prowler's CloudFormation template — it
Input
context: string, credentials?: any, external_id: string, metadata?: any, name: string, org_type: string, secret_type?: anycontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
credentials?: anyoptionalOrg-level credentials used for discovery. AWS role: {"role_arn": ...} — external_id defaults to your Prowler tenant id, the value the ProwlerScan CloudFormation template deploys with; only pass it for a manually deployed role with a custom ExternalId. Azure static: {"client_id": ..., "client_secret": ...} for a service principal that can read the management-group hierarchy — client_id must be a UUID and the Azure tenant_id is taken from the organization's external_id, never passed here. GCP static: {"client_id": ..., "client_secret": ..., "refresh_token": ...}. GCP service_account: {"service_a
external_id: stringrequiredCloud-side id: AWS organization id (o-...), Azure tenant id (UUID) or GCP numeric organization id (digits only, e.g. '123456789012').
metadata?: anyoptionalOptional free-form metadata to store on the organization.
name: stringrequiredHuman-readable organization name (min 3 chars).
org_type: stringrequiredOrganization type: 'aws', 'azure' or 'gcp'.
secret_type?: anyoptionalType of org-level credentials. AWS requires 'role'; Azure requires 'static'; GCP accepts 'static' or 'service_account'. Must be provided together with credentials.
prowler_cloud_create_scan_configurationoutputSchema declaredCreate a scan configuration and optionally attach it to providers. Returns the stored configuration as saved, including its full body and the providers it ended up attached to. Workflow: 1. Use prowler_cloud_get_scan_configuration_schema to learn the valid configuration structure. 2. Use prowler_app_search_providers to find provider ids. 3. Use this tool to create and attach the configuration.
Input
configuration: any, context: string, name: string, provider_ids?: arrayconfiguration: anyrequiredScan configuration body: a two-level mapping of provider type -> (setting key -> value), e.g. {'aws': {'excluded_services': ['macie']}}. Accepts a dict or a JSON string. It is a partial OVERRIDE on top of Prowler's built-in defaults: include only the providers and keys you want to change; omitted providers/keys keep their defaults. Call prowler_cloud_get_scan_configuration_schema for the valid keys, types, and constraints.
context: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
name: stringrequiredHuman-readable name for the scan configuration (3-100 characters).
provider_ids?: arrayoptionalProvider UUIDv4s to attach this configuration to. Providers not attached to any custom configuration use the built-in default.
prowler_cloud_delete_alert_recipientoutputSchema declaredDelete an alert recipient. WARNING: This is a destructive operation. The recipient stops receiving alerts; past alert events that referenced it remain queryable. Requires `manage_alerts`.
Input
context: string, recipient_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
recipient_id: stringrequiredUUIDv4 of the recipient to delete.
prowler_cloud_delete_alert_ruleoutputSchema declaredDelete an alert rule. WARNING: This is a destructive operation. The rule stops firing immediately; past alert events remain queryable. Requires the `manage_alerts` permission.
Input
context: string, rule_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
rule_id: stringrequiredUUIDv4 of the alert rule to delete.
prowler_cloud_delete_finding_triage_noteoutputSchema declaredDelete a note from a finding's triage. WARNING: This permanently removes the note and cannot be undone. Requires the `manage_scans` permission on the API key/role.
Input
context: string, finding_uid: string, note_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
finding_uid: stringrequiredStable finding UID.
note_id: stringrequiredUUIDv4 of the note to delete. Get it from prowler_cloud_list_finding_triage_notes.
prowler_cloud_delete_organizationoutputSchema declaredStart deleting an organization. WARNING: This is a destructive operation. It deletes the organization, its entire OU/folder hierarchy, and marks EVERY linked provider as deleted — removing their scans and findings. It cannot be undone. To detach providers without deleting them, use prowler_cloud_manage_organization_providers first. IMPORTANT: the API task this waits on only marks the organization deleted and dispatches one deletion job per linked provider; the organization row itself is removed by a follow-up job once every provider finishes, and a failure there rolls the whole deletion back.
Input
context: string, organization_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
organization_id: stringrequiredOrganization UUIDv4. Get it from prowler_cloud_list_organizations.
prowler_cloud_delete_scan_configurationoutputSchema declaredDelete a scan configuration. WARNING: This is a destructive operation. Any providers currently attached to this configuration will fall back to the built-in default scan configuration.
Input
context: string, scan_configuration_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
scan_configuration_id: stringrequiredUUIDv4 of the scan configuration to delete.
prowler_cloud_delete_scan_scheduleoutputSchema declaredDelete a provider's scan schedule. WARNING: This is a destructive operation - it stops recurring scans and resets the scan schedule to its unconfigured defaults. To temporarily stop scans instead, prefer prowler_cloud_set_scan_schedule with scan_enabled=False. Requires the `manage_scans` permission on the API key/role.
Input
context: string, provider_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
provider_id: stringrequiredUUIDv4 of the provider whose scan schedule to delete.
prowler_cloud_discover_organizationoutputSchema declaredDiscover the real structure of a cloud provider organization: AWS accounts and OUs, Azure subscriptions and management groups, or GCP projects and folders. Starts a discovery run (or checks an existing one when discovery_id is given) and waits up to wait_seconds for it to finish. On success it returns the discovered accounts/OUs (AWS), subscriptions/management groups (Azure) or projects/folders (GCP), each account, subscription or project with its registration state (`provider_exists`, `apply_status`, `blocked_reasons`) so you can choose what to onboard. If still running after the wait, it ret
Input
context: string, discovery_id?: any, organization_id: string, wait_seconds?: integercontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
discovery_id?: anyoptionalCheck an existing discovery instead of starting a new one. Use the id returned by a previous call that was still running.
organization_id: stringrequiredOrganization UUIDv4. Get it from prowler_cloud_list_organizations.
wait_seconds?: integeroptionalHow long to wait for the discovery to finish before returning its current status (0-120).
prowler_cloud_get_alert_eventoutputSchema declaredRetrieve a single alert event including its matched rule and scan.
Input
context: string, event_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
event_id: stringrequiredUUIDv4 of the alert event to retrieve.
prowler_cloud_get_alert_recipientoutputSchema declaredRetrieve a single alert recipient with its confirmation status.
Input
context: string, recipient_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
recipient_id: stringrequiredUUIDv4 of the recipient to retrieve.
prowler_cloud_get_alert_ruleoutputSchema declaredRetrieve an alert rule including its condition DSL and recipient emails.
Input
context: string, rule_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
rule_id: stringrequiredUUIDv4 of the alert rule to retrieve.
prowler_cloud_get_finding_triageoutputSchema declaredRetrieve a single finding's triage state by finding UID.
Input
context: string, finding_uid: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
finding_uid: stringrequiredStable finding UID. Get it from prowler_app_search_security_findings or prowler_app_get_finding_details.
prowler_cloud_get_organizationoutputSchema declaredGet one organization in full: attributes, linked providers, credentials status, latest discovery and the OU/management-group/folder hierarchy. The `credentials` field only reports whether org-level credentials are stored and their type — secret values are write-only and never returned. `latest_discovery` carries counts and status only; for the discovered account/project lists use prowler_cloud_discover_organization with the discovery id.
Input
context: string, include_hierarchy?: boolean, organization_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
include_hierarchy?: booleanoptionalInclude the nested OU/management-group/folder tree. Set False to save calls on large organizations.
organization_id: stringrequiredOrganization UUIDv4. Get it from prowler_cloud_list_organizations.
prowler_cloud_get_scan_configurationoutputSchema declaredRetrieve a scan configuration including its full configuration body. The 'configuration' body follows the JSON Schema returned by prowler_cloud_get_scan_configuration_schema (one section per provider type).
Input
context: string, scan_configuration_id: stringcontext: stringrequiredExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
scan_configuration_id: stringrequiredUUIDv4 of the scan configuration to retrieve. Use prowler_cloud_list_scan_configurations to find ids.