{"openapi":"3.1.0","info":{"title":"Harness Security Testing (BYOK) API","version":"0.1.0","description":"Harness Security Testing (BYOK) lets an AI assistant read your own Harness Security Testing data through the Harness Security Testing API with a key you supply (Harness personal access token or service account token). Read-only: 9 tools (list_targets, get_target, get_target_overview, list_scans, get_scan, get_scan_issue_counts, list_issues, list_scanner_products, get_issue_trend). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-harness-sto.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-harness-sto/docs"},"termsOfService":"https://connectorbay.com/byok-harness-sto/terms"},"servers":[{"url":"https://byok-harness-sto.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-harness-sto/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_targets":{"post":{"operationId":"list_targets","summary":"List the security scan targets (repositories, container images, instances, configurations) of a Harness project. Use for","description":"List the security scan targets (repositories, container images, instances, configurations) of a Harness project. Use for \"Which security scan targets does my Harness project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"},"org_id":{"description":"Harness organization identifier, for example 'default'.","maxLength":64,"title":"Org Id","type":"string"},"project_id":{"description":"Harness project identifier.","maxLength":64,"title":"Project Id","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Part of the target name.","title":"Name"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 100, default 30).","title":"Page Size"}},"required":["account_id","org_id","project_id"],"title":"list_targetsArguments","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_target":{"post":{"operationId":"get_target","summary":"Get one scan target: name, type (container, repository, instance, configuration), URL and baseline variant. Use for \"Wha","description":"Get one scan target: name, type (container, repository, instance, configuration), URL and baseline variant. Use for \"What is scan target tgt_abc123 in Harness STO\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"target_id":{"description":"Test target ID (from list_targets).","maxLength":100,"title":"Target Id","type":"string"},"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"},"org_id":{"description":"Harness organization identifier, for example 'default'.","maxLength":64,"title":"Org Id","type":"string"},"project_id":{"description":"Harness project identifier.","maxLength":64,"title":"Project Id","type":"string"}},"required":["target_id","account_id","org_id","project_id"],"title":"get_targetArguments","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_target_overview":{"post":{"operationId":"get_target_overview","summary":"Get a scan target's overview: issue and occurrence counts by severity, new and remediated deltas, package counts and las","description":"Get a scan target's overview: issue and occurrence counts by severity, new and remediated deltas, package counts and last scan time. Use for \"What is the vulnerability picture for Harness STO target tgt_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"target_id":{"description":"Test target ID (from list_targets).","maxLength":100,"title":"Target Id","type":"string"},"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"},"org_id":{"description":"Harness organization identifier, for example 'default'.","maxLength":64,"title":"Org Id","type":"string"},"project_id":{"description":"Harness project identifier.","maxLength":64,"title":"Project Id","type":"string"},"variant_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Optional variant ID to look at that variant's latest scan.","title":"Variant Id"}},"required":["target_id","account_id","org_id","project_id"],"title":"get_target_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_scans":{"post":{"operationId":"list_scans","summary":"List security scans of the account with product, status (Pending, Running, Succeeded, Failed), pipeline, execution and t","description":"List security scans of the account with product, status (Pending, Running, Succeeded, Failed), pipeline, execution and target variant. Filter by pipeline execution ID. Use for \"Which security scans ran for Harness pipeline execution AbCdEf123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"},"execution_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only scans of this pipeline execution ID.","title":"Execution Id"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 100, default 30).","title":"Page Size"}},"required":["account_id"],"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 security scan: status, product, pipeline, stage, branch and repository details, coverage and artifact image. Use","description":"Get one security scan: status, product, pipeline, stage, branch and repository details, coverage and artifact image. Use for \"What did Harness STO scan scan_1 cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scan_id":{"description":"Scan ID (from list_scans).","maxLength":100,"title":"Scan Id","type":"string"},"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"}},"required":["scan_id","account_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_scan_issue_counts":{"post":{"operationId":"get_scan_issue_counts","summary":"Get the issue counts of one scan by severity (critical, high, medium, low, info), plus new, ignored and policy failure c","description":"Get the issue counts of one scan by severity (critical, high, medium, low, info), plus new, ignored and policy failure counts. Use for \"How many critical and high issues did Harness STO scan scan_1 find\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scan_id":{"description":"Scan ID (from list_scans).","maxLength":100,"title":"Scan Id","type":"string"},"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"},"org_id":{"description":"Harness organization identifier, for example 'default'.","maxLength":64,"title":"Org Id","type":"string"},"project_id":{"description":"Harness project identifier.","maxLength":64,"title":"Project Id","type":"string"}},"required":["scan_id","account_id","org_id","project_id"],"title":"get_scan_issue_countsArguments","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_issues":{"post":{"operationId":"list_issues","summary":"List deduplicated security issues of the account with title, severity, scan type (SAST, SCA, SECRET ...), status, target","description":"List deduplicated security issues of the account with title, severity, scan type (SAST, SCA, SECRET ...), status, target and occurrence count. Filter by scanner product ID. Use for \"What security issues does Harness STO know about\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"},"product_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only issues from this scanner product ID (from list_products).","title":"Product Id"},"exclude_occurrences":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to leave out the per-occurrence detail (smaller answer).","title":"Exclude Occurrences"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 100, default 30).","title":"Page Size"}},"required":["account_id"],"title":"list_issuesArguments","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_scanner_products":{"post":{"operationId":"list_scanner_products","summary":"List the scanner products Harness STO supports, with name and whether each is enabled. Use for \"Which security scanners ","description":"List the scanner products Harness STO supports, with name and whether each is enabled. Use for \"Which security scanners does Harness STO support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Part of the product name.","title":"Name"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 100, default 30).","title":"Page Size"}},"required":["account_id"],"title":"list_scanner_productsArguments","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_issue_trend":{"post":{"operationId":"get_issue_trend","summary":"Get the daily count of baseline issues for a project over the last days (up to 90), with detections and remediations. Us","description":"Get the daily count of baseline issues for a project over the last days (up to 90), with detections and remediations. Use for \"How have the security issue counts of my Harness project changed over the last 30 days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Harness account ID (the string after /account/ in your Harness URL).","maxLength":64,"title":"Account Id","type":"string"},"org_id":{"description":"Harness organization identifier, for example 'default'.","maxLength":64,"title":"Org Id","type":"string"},"project_id":{"description":"Harness project identifier.","maxLength":64,"title":"Project Id","type":"string"},"days":{"anyOf":[{"maximum":90,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Number of days of history (1 to 90, default 30).","title":"Days"}},"required":["account_id","org_id","project_id"],"title":"get_issue_trendArguments","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}}}}