{"openapi":"3.1.0","info":{"title":"Prowler Cloud (BYOK) API","version":"0.1.0","description":"Prowler Cloud (BYOK) lets an AI assistant read your own Prowler Cloud data through the Prowler Cloud API with a key you supply (Prowler Cloud API key). Read-only: 8 tools (list_providers, list_scans, get_scan, get_findings_overview, list_latest_findings, list_latest_finding_groups, list_latest_resources, list_compliance_overviews). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-prowler.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-prowler/docs"},"termsOfService":"https://connectorbay.com/byok-prowler/terms"},"servers":[{"url":"https://byok-prowler.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-prowler/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_providers":{"post":{"operationId":"list_providers","summary":"List the cloud and SaaS accounts connected to Prowler Cloud with their type, account identifier, alias and whether the l","description":"List the cloud and SaaS accounts connected to Prowler Cloud with their type, account identifier, alias and whether the last connection check worked. Use for \"Which cloud accounts are connected to my Prowler Cloud and are they all reachable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"provider_type":{"anyOf":[{"enum":["alibabacloud","aws","azure","cloudflare","gcp","github","googleworkspace","iac","image","kubernetes","m365","mongodbatlas","okta","openstack","oraclecloud","vercel"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of cloud or SaaS account: aws, azure, gcp, kubernetes, m365, github and others listed.","title":"Provider Type"},"connected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only accounts whose connection check passed, false for those that failed.","title":"Connected"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text matched against account alias and identifier.","title":"Search"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_providersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_scans":{"post":{"operationId":"list_scans","summary":"List security scans with state, trigger, progress, duration and how many resources were scanned. Filter by state or acco","description":"List security scans with state, trigger, progress, duration and how many resources were scanned. Filter by state or account type. Use for \"What was the state of my latest Prowler scans\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"enum":["available","cancelled","completed","executing","failed","scheduled"],"type":"string"},{"type":"null"}],"default":null,"description":"Scan state: available, scheduled, executing, completed, failed or cancelled.","title":"State"},"trigger":{"anyOf":[{"enum":["manual","scheduled"],"type":"string"},{"type":"null"}],"default":null,"description":"How the scan started: manual or scheduled.","title":"Trigger"},"provider_type":{"anyOf":[{"enum":["alibabacloud","aws","azure","cloudflare","gcp","github","googleworkspace","iac","image","kubernetes","m365","mongodbatlas","okta","openstack","oraclecloud","vercel"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of cloud or SaaS account: aws, azure, gcp, kubernetes, m365, github and others listed.","title":"Provider Type"},"sort":{"anyOf":[{"enum":["name","-name","trigger","-trigger","inserted_at","-inserted_at","scheduled_at","-scheduled_at"],"type":"string"},{"type":"null"}],"default":"-inserted_at","description":"Sort field, prefix with - for descending, for example -inserted_at or name.","title":"Sort"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_scansArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_scan":{"post":{"operationId":"get_scan","summary":"Get one scan by its id: state, progress, duration, resource count and start, finish and next scheduled times. Use for \"H","description":"Get one scan by its id: state, progress, duration, resource count and start, finish and next scheduled times. Use for \"How did Prowler scan 5d0e8a10 finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scan_id":{"description":"Scan id (UUID) from list_scans.","maxLength":200,"title":"Scan Id","type":"string"}},"required":["scan_id"],"title":"get_scanArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_findings_overview":{"post":{"operationId":"get_findings_overview","summary":"Show the totals of passed, failed and muted findings from the latest scans, plus how many are new or changed since the p","description":"Show the totals of passed, failed and muted findings from the latest scans, plus how many are new or changed since the previous scan. Use for \"How many failed findings do I have across all accounts and how many are new\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"provider_type":{"anyOf":[{"enum":["alibabacloud","aws","azure","cloudflare","gcp","github","googleworkspace","iac","image","kubernetes","m365","mongodbatlas","okta","openstack","oraclecloud","vercel"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of cloud or SaaS account: aws, azure, gcp, kubernetes, m365, github and others listed.","title":"Provider Type"}},"title":"get_findings_overviewArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_latest_findings":{"post":{"operationId":"list_latest_findings","summary":"List findings from the latest scan of each account, filtered by status, severity, service, region, account type or check","description":"List findings from the latest scan of each account, filtered by status, severity, service, region, account type or check id. Use for \"Which critical findings are failing right now in my AWS accounts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["FAIL","PASS","MANUAL"],"type":"string"},{"type":"null"}],"default":null,"description":"Result: FAIL, PASS or MANUAL.","title":"Status"},"severity":{"anyOf":[{"enum":["critical","high","medium","low","informational"],"type":"string"},{"type":"null"}],"default":null,"description":"Severity: critical, high, medium, low or informational.","title":"Severity"},"service":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cloud service the check belongs to, for example s3, iam or ec2.","title":"Service"},"region":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Region, for example eu-west-1.","title":"Region"},"provider_type":{"anyOf":[{"enum":["alibabacloud","aws","azure","cloudflare","gcp","github","googleworkspace","iac","image","kubernetes","m365","mongodbatlas","okta","openstack","oraclecloud","vercel"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of cloud or SaaS account: aws, azure, gcp, kubernetes, m365, github and others listed.","title":"Provider Type"},"check_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Exact check id, for example s3_bucket_public_access.","title":"Check Id"},"muted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only muted findings, false for only active ones; leave unset for both.","title":"Muted"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_latest_findingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_latest_finding_groups":{"post":{"operationId":"list_latest_finding_groups","summary":"List findings grouped by check from the latest scans, with severity, status, failing resource counts and when the check ","description":"List findings grouped by check from the latest scans, with severity, status, failing resource counts and when the check started failing. Use for \"Which checks fail on the most resources in my cloud accounts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["FAIL","PASS","MANUAL"],"type":"string"},{"type":"null"}],"default":null,"description":"Group status: FAIL, PASS or MANUAL.","title":"Status"},"severity":{"anyOf":[{"enum":["critical","high","medium","low","informational"],"type":"string"},{"type":"null"}],"default":null,"description":"Severity: critical, high, medium, low or informational.","title":"Severity"},"provider_type":{"anyOf":[{"enum":["alibabacloud","aws","azure","cloudflare","gcp","github","googleworkspace","iac","image","kubernetes","m365","mongodbatlas","okta","openstack","oraclecloud","vercel"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of cloud or SaaS account: aws, azure, gcp, kubernetes, m365, github and others listed.","title":"Provider Type"},"service":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cloud service, for example s3 or iam.","title":"Service"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_latest_finding_groupsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_latest_resources":{"post":{"operationId":"list_latest_resources","summary":"List cloud resources seen in the latest scans with type, service, region, tags and how many findings fail on each. Use f","description":"List cloud resources seen in the latest scans with type, service, region, tags and how many findings fail on each. Use for \"Which of my resources have the most failed findings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cloud service, for example s3 or ec2.","title":"Service"},"region":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Region, for example us-east-1.","title":"Region"},"resource_type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Resource type, for example AwsS3Bucket.","title":"Resource Type"},"provider_type":{"anyOf":[{"enum":["alibabacloud","aws","azure","cloudflare","gcp","github","googleworkspace","iac","image","kubernetes","m365","mongodbatlas","okta","openstack","oraclecloud","vercel"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of cloud or SaaS account: aws, azure, gcp, kubernetes, m365, github and others listed.","title":"Provider Type"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text matched against resource name and id.","title":"Search"},"sort":{"anyOf":[{"enum":["failed_findings_count","-failed_findings_count","inserted_at","-inserted_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, prefix with - for descending.","title":"Sort"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_latest_resourcesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_compliance_overviews":{"post":{"operationId":"list_compliance_overviews","summary":"List compliance frameworks for one scan with passed, failed and manual requirement counts. Use for \"How does scan 5d0e8a","description":"List compliance frameworks for one scan with passed, failed and manual requirement counts. Use for \"How does scan 5d0e8a10 score against each compliance framework\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scan_id":{"description":"Scan id (UUID) from list_scans.","maxLength":200,"title":"Scan Id","type":"string"},"framework":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this framework name, for example CIS or PCI.","title":"Framework"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"required":["scan_id"],"title":"list_compliance_overviewsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}