{"openapi":"3.1.0","info":{"title":"JFrog Xray (BYOK) API","version":"0.1.0","description":"JFrog Xray (BYOK) lets an AI assistant read your own JFrog Xray data through the JFrog Xray API with a key you supply (JFrog access token (a read-only scoped token is enough)). Read-only: 12 tools (get_version, list_policies, get_policy, list_watches, get_watch, list_ignore_rules, list_binary_managers, get_repos_indexing_config, get_repository_scan_config, get_db_sync_status,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-jfrog-xray.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-jfrog-xray/docs"},"termsOfService":"https://connectorbay.com/byok-jfrog-xray/terms"},"servers":[{"url":"https://byok-jfrog-xray.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-jfrog-xray/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/get_version":{"post":{"operationId":"get_version","summary":"Show the Xray version and revision. Use for \"Which Xray version does my JFrog platform run\".","description":"Show the Xray version and revision. Use for \"Which Xray version does my JFrog platform run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"get_versionArguments","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_policies":{"post":{"operationId":"list_policies","summary":"List Xray policies (security, license and operational risk) with their rules, criteria, actions and the watches they are","description":"List Xray policies (security, license and operational risk) with their rules, criteria, actions and the watches they are assigned to. Use for \"Which Xray security policies do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"project_key":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this JFrog project key (when Projects are enabled).","title":"Project Key"}},"required":["account"],"title":"list_policiesArguments","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_policy":{"post":{"operationId":"get_policy","summary":"Get one Xray policy by name with its rules, criteria, actions and assigned watches. Use for \"What rules does Xray policy","description":"Get one Xray policy by name with its rules, criteria, actions and assigned watches. Use for \"What rules does Xray policy block-critical-cves have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"name":{"description":"Policy name from list_policies.","maxLength":200,"title":"Name","type":"string"},"project_key":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this JFrog project key (when Projects are enabled).","title":"Project Key"}},"required":["account","name"],"title":"get_policyArguments","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_watches":{"post":{"operationId":"list_watches","summary":"List Xray watches with the repositories, builds or bundles they monitor, assigned policies and ticket settings. Use for ","description":"List Xray watches with the repositories, builds or bundles they monitor, assigned policies and ticket settings. Use for \"Which Xray watches are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"project_key":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this JFrog project key (when Projects are enabled).","title":"Project Key"}},"required":["account"],"title":"list_watchesArguments","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_watch":{"post":{"operationId":"get_watch","summary":"Get one Xray watch by name with its monitored resources and assigned policies. Use for \"Which resources does Xray watch ","description":"Get one Xray watch by name with its monitored resources and assigned policies. Use for \"Which resources does Xray watch prod-images monitor\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"name":{"description":"Watch name from list_watches.","maxLength":200,"title":"Name","type":"string"},"project_key":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this JFrog project key (when Projects are enabled).","title":"Project Key"}},"required":["account","name"],"title":"get_watchArguments","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_ignore_rules":{"post":{"operationId":"list_ignore_rules","summary":"List violation ignore rules with creation time, notes, expiry and what they ignore; filter by CVE, watch or policy. Use ","description":"List violation ignore rules with creation time, notes, expiry and what they ignore; filter by CVE, watch or policy. Use for \"Which Xray ignore rules expire soon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"cve":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules for this CVE id.","title":"Cve"},"watch":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules for this watch name.","title":"Watch"},"policy":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules for this policy name.","title":"Policy"},"expires_before":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules expiring before this time (RFC 3339).","title":"Expires Before"},"page_num":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Num"},"num_of_rows":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Rows per page (1 to 100).","title":"Num Of Rows"},"project_key":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this JFrog project key (when Projects are enabled).","title":"Project Key"}},"required":["account"],"title":"list_ignore_rulesArguments","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_binary_managers":{"post":{"operationId":"list_binary_managers","summary":"List the Artifactory instances connected to Xray with version, license state and their repositories. Use for \"Which Arti","description":"List the Artifactory instances connected to Xray with version, license state and their repositories. Use for \"Which Artifactory instances is Xray connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"list_binary_managersArguments","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_repos_indexing_config":{"post":{"operationId":"get_repos_indexing_config","summary":"Show which repositories of one connected Artifactory are indexed by Xray and which are not. Use for \"Which repositories ","description":"Show which repositories of one connected Artifactory are indexed by Xray and which are not. Use for \"Which repositories does Xray index\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"binary_manager_id":{"description":"Binary manager id; default for the Artifactory of this platform (see list_binary_managers).","maxLength":64,"title":"Binary Manager Id","type":"string"},"project_key":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this JFrog project key (when Projects are enabled).","title":"Project Key"}},"required":["account","binary_manager_id"],"title":"get_repos_indexing_configArguments","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_repository_scan_config":{"post":{"operationId":"get_repository_scan_config","summary":"Show the scanning settings of one repository: contextual analysis, exposures, retention days and path specific settings.","description":"Show the scanning settings of one repository: contextual analysis, exposures, retention days and path specific settings. Use for \"What Xray scan settings does repository docker-prod have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"repo_name":{"description":"Repository key.","maxLength":64,"title":"Repo Name","type":"string"},"project_key":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this JFrog project key (when Projects are enabled).","title":"Project Key"}},"required":["account","repo_name"],"title":"get_repository_scan_configArguments","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_db_sync_status":{"post":{"operationId":"get_db_sync_status","summary":"Show the state of the Xray vulnerability database sync: last update time, state and online or offline mode (admin token ","description":"Show the state of the Xray vulnerability database sync: last update time, state and online or offline mode (admin token needed). Use for \"When did the Xray vulnerability database last sync\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"}},"required":["account"],"title":"get_db_sync_statusArguments","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_git_repositories":{"post":{"operationId":"list_git_repositories","summary":"List Git repositories scanned by Xray source code scanning with provider, last scanned commit and scanned branches. Use ","description":"List Git repositories scanned by Xray source code scanning with provider, last scanned commit and scanned branches. Use for \"Which Git repositories has Xray scanned\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 100).","title":"Limit"},"order_by":{"anyOf":[{"enum":["id","name","last_scanned_date"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order By"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction.","title":"Direction"}},"required":["account"],"title":"list_git_repositoriesArguments","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/search_violations":{"post":{"operationId":"search_violations","summary":"Search Xray violations with description, severity, type, affected components, watch, issue id and impacted artifacts; fi","description":"Search Xray violations with description, severity, type, affected components, watch, issue id and impacted artifacts; filter by watch, type, minimum severity, CVE or time. Cursor paged. Use for \"Which critical Xray violations were created this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account":{"description":"Your JFrog Platform name: the part before .jfrog.io in the address you sign in at (acme for acme.jfrog.io).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account","type":"string"},"project_key":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this JFrog project key (when Projects are enabled).","title":"Project Key"},"watch_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only violations of this watch.","title":"Watch Name"},"violation_type":{"anyOf":[{"enum":["Security","License","Operational_Risk"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this violation type.","title":"Violation Type"},"min_severity":{"anyOf":[{"enum":["Critical","High","Medium","Low","Information","Unknown"],"type":"string"},{"type":"null"}],"default":null,"description":"Only violations at or above this severity.","title":"Min Severity"},"cve_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only violations for this CVE id.","title":"Cve Id"},"created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only violations created from this time (RFC 3339).","title":"Created From"},"created_until":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only violations created until this time (RFC 3339).","title":"Created Until"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Violations per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous page's page_info.next_cursor; leave empty for the first page.","title":"Cursor"}},"required":["account"],"title":"search_violationsArguments","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}}}}