{"openapi":"3.1.0","info":{"title":"JFrog Artifactory (BYOK) API","version":"0.1.0","description":"JFrog Artifactory (BYOK) lets an AI assistant read your own JFrog Artifactory data through the JFrog Artifactory API with a key you supply (JFrog access token (a read-only scoped token is enough)). Read-only: 10 tools (get_version, list_repositories, get_storage_summary, get_repository_folder_info, list_builds, search_artifacts, list_artifacts_created, list_unused_artifacts, list_docker_images,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-jfrog-artifactory.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-jfrog-artifactory/docs"},"termsOfService":"https://connectorbay.com/byok-jfrog-artifactory/terms"},"servers":[{"url":"https://byok-jfrog-artifactory.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-jfrog-artifactory/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 Artifactory version, revision and the add-ons enabled. Use for \"Which Artifactory version does my JFrog platfor","description":"Show the Artifactory version, revision and the add-ons enabled. Use for \"Which Artifactory 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_repositories":{"post":{"operationId":"list_repositories","summary":"List repositories with key, type (local, remote, virtual, federated), package type, description and URL. Use for \"Which ","description":"List repositories with key, type (local, remote, virtual, federated), package type, description and URL. Use for \"Which Docker repositories do I have in Artifactory\".","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"},"type":{"anyOf":[{"enum":["local","remote","virtual","federated","distribution"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this repository type.","title":"Type"},"package_type":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only this package type, for example docker, maven, npm, pypi, helm, generic.","title":"Package Type"},"project":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only repositories of this JFrog project key.","title":"Project"}},"required":["account"],"title":"list_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/get_storage_summary":{"post":{"operationId":"get_storage_summary","summary":"Show storage usage: total binaries and artifacts count and size, and the used space and file count per repository. Use f","description":"Show storage usage: total binaries and artifacts count and size, and the used space and file count per repository. Use for \"How much storage does each Artifactory repository use\".","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_storage_summaryArguments","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_folder_info":{"post":{"operationId":"get_repository_folder_info","summary":"Show the top level of one repository: creation and last modification time and the names of its direct child files and fo","description":"Show the top level of one repository: creation and last modification time and the names of its direct child files and folders. Use for \"What is at the top of repository libs-release-local\".","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_key":{"description":"Repository key from list_repositories.","maxLength":64,"title":"Repo Key","type":"string"}},"required":["account","repo_key"],"title":"get_repository_folder_infoArguments","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_builds":{"post":{"operationId":"list_builds","summary":"List build names with the time each build was last started; optionally limit to one JFrog project. Use for \"Which builds","description":"List build names with the time each build was last started; optionally limit to one JFrog project. Use for \"Which builds have been published to Artifactory\".","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":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds of this JFrog project key.","title":"Project"}},"required":["account"],"title":"list_buildsArguments","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_artifacts":{"post":{"operationId":"search_artifacts","summary":"Find artifacts by part of the file name, optionally within some repositories. Returns the storage URI of each match. Use","description":"Find artifacts by part of the file name, optionally within some repositories. Returns the storage URI of each match. Use for \"Find artifacts named commons-lang3 in Artifactory\".","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":"Part of the file name; * and ? wildcards work.","maxLength":200,"title":"Name","type":"string"},"repos":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Limit the search to these repository keys (comma separated).","title":"Repos"}},"required":["account","name"],"title":"search_artifactsArguments","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_artifacts_created":{"post":{"operationId":"list_artifacts_created","summary":"List artifacts created in a time range with their creation time. Use for \"Which artifacts were created in the last day i","description":"List artifacts created in a time range with their creation time. Use for \"Which artifacts were created in the last day in Artifactory\".","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"},"created_from":{"description":"Start of the range as Unix time in milliseconds.","minimum":0,"title":"Created From","type":"integer"},"created_to":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range as Unix time in milliseconds (defaults to now).","title":"Created To"},"repos":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Limit the search to these repository keys (comma separated).","title":"Repos"}},"required":["account","created_from"],"title":"list_artifacts_createdArguments","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_unused_artifacts":{"post":{"operationId":"list_unused_artifacts","summary":"List artifacts not downloaded since a given time, with their last download time. Useful to find clean-up candidates. Use","description":"List artifacts not downloaded since a given time, with their last download time. Useful to find clean-up candidates. Use for \"Which artifacts have not been downloaded this year\".","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"},"not_used_since":{"description":"Artifacts last downloaded before this Unix time in milliseconds.","minimum":0,"title":"Not Used Since","type":"integer"},"created_before":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only artifacts created before this Unix time in milliseconds.","title":"Created Before"},"repos":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Limit the search to these repository keys (comma separated).","title":"Repos"}},"required":["account","not_used_since"],"title":"list_unused_artifactsArguments","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_docker_images":{"post":{"operationId":"list_docker_images","summary":"List the image repositories (the Docker catalog) of one Docker repository. Use for \"Which images are in my Artifactory d","description":"List the image repositories (the Docker catalog) of one Docker repository. Use for \"Which images are in my Artifactory docker repository\".","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_key":{"description":"Docker repository key from list_repositories.","maxLength":64,"title":"Repo Key","type":"string"},"n":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Number of images to return (1 to 1000).","title":"N"},"last":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The last image name of the previous page, to continue after it.","title":"Last"}},"required":["account","repo_key"],"title":"list_docker_imagesArguments","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_background_tasks":{"post":{"operationId":"list_background_tasks","summary":"List running and scheduled background tasks (such as garbage collection or indexing) with type, state, description and s","description":"List running and scheduled background tasks (such as garbage collection or indexing) with type, state, description and start time. Use for \"What background tasks are running in Artifactory\".","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_background_tasksArguments","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}}}}