{"openapi":"3.1.0","info":{"title":"GitLab Packages (BYOK) API","version":"0.1.0","description":"GitLab Packages (BYOK) lets an AI assistant read your own GitLab Packages data through the GitLab Packages API with a key you supply (personal access token (read_api scope)). Read-only: 10 tools (list_project_packages, get_package, list_package_files, list_group_packages, list_registry_repositories, list_group_registry_repositories, list_registry_tags, get_registry_tag, list_project_releases,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-gitlab-packages.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-gitlab-packages/docs"},"termsOfService":"https://connectorbay.com/byok-gitlab-packages/terms"},"servers":[{"url":"https://byok-gitlab-packages.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-gitlab-packages/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_project_packages":{"post":{"operationId":"list_project_packages","summary":"List the packages in a project's package registry (npm, PyPI, Maven, generic and others) with version, type, status and ","description":"List the packages in a project's package registry (npm, PyPI, Maven, generic and others) with version, type, status and last download time. Use for \"Which npm packages does gitlab-org/gitlab publish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Numeric project ID, or the full path with namespace such as 'gitlab-org/gitlab' (slashes are encoded for you).","maxLength":200,"title":"Project","type":"string"},"package_type":{"anyOf":[{"enum":["maven","npm","conan","nuget","pypi","composer","generic","golang","debian","rubygems","helm","terraform_module","rpm","ml_model","cargo"],"type":"string"},{"type":"null"}],"default":null,"description":"Only packages of this type.","title":"Package Type"},"package_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only packages with exactly this name.","title":"Package Name"},"package_version":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only packages with exactly this version.","title":"Package Version"},"order_by":{"anyOf":[{"enum":["created_at","name","version","type"],"type":"string"},{"type":"null"}],"default":"created_at","description":"Order by created_at (default), name, version or type.","title":"Order By"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["project"],"title":"list_project_packagesArguments","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_package":{"post":{"operationId":"get_package","summary":"Get one package of a project by its numeric ID: name, version, type, status, creation and last download time and the pip","description":"Get one package of a project by its numeric ID: name, version, type, status, creation and last download time and the pipeline that built it. Use for \"Describe package 123 of gitlab-org/gitlab\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Numeric project ID, or the full path with namespace such as 'gitlab-org/gitlab' (slashes are encoded for you).","maxLength":200,"title":"Project","type":"string"},"package_id":{"description":"Numeric ID of the package (from list_project_packages).","title":"Package Id","type":"integer"}},"required":["project","package_id"],"title":"get_packageArguments","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_package_files":{"post":{"operationId":"list_package_files","summary":"List the files that make up a package with name, size and SHA-256 checksum. Use for \"Which files does package 123 of git","description":"List the files that make up a package with name, size and SHA-256 checksum. Use for \"Which files does package 123 of gitlab-org/gitlab contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Numeric project ID, or the full path with namespace such as 'gitlab-org/gitlab' (slashes are encoded for you).","maxLength":200,"title":"Project","type":"string"},"package_id":{"description":"Numeric ID of the package (from list_project_packages).","title":"Package Id","type":"integer"},"order_by":{"anyOf":[{"enum":["id","created_at","file_name"],"type":"string"},{"type":"null"}],"default":"id","description":"Order by id (default), created_at or file_name.","title":"Order By"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["project","package_id"],"title":"list_package_filesArguments","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_group_packages":{"post":{"operationId":"list_group_packages","summary":"List packages across all projects of a group (and its subgroups) with project path, version, type and status. Use for \"W","description":"List packages across all projects of a group (and its subgroups) with project path, version, type and status. Use for \"Which packages exist across gitlab-org\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group":{"description":"Numeric group ID, or the full group path such as 'gitlab-org' (slashes are encoded for you).","maxLength":200,"title":"Group","type":"string"},"package_type":{"anyOf":[{"enum":["maven","npm","conan","nuget","pypi","composer","generic","golang","debian","rubygems","helm","terraform_module","rpm","ml_model","cargo"],"type":"string"},{"type":"null"}],"default":null,"description":"Only packages of this type.","title":"Package Type"},"package_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only packages with exactly this name.","title":"Package Name"},"exclude_subgroups":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to leave out subgroups.","title":"Exclude Subgroups"},"order_by":{"anyOf":[{"enum":["created_at","name","version","type","project_path"],"type":"string"},{"type":"null"}],"default":"created_at","description":"Order by created_at (default), name, version, type or project_path.","title":"Order By"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"asc","description":"Sort direction: asc (default) or desc.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["group"],"title":"list_group_packagesArguments","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_registry_repositories":{"post":{"operationId":"list_registry_repositories","summary":"List the container registry repositories of a project with location, tag count and size. Use for \"Which container images","description":"List the container registry repositories of a project with location, tag count and size. Use for \"Which container images does gitlab-org/gitlab have in its registry\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Numeric project ID, or the full path with namespace such as 'gitlab-org/gitlab' (slashes are encoded for you).","maxLength":200,"title":"Project","type":"string"},"tags_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the number of tags per repository.","title":"Tags Count"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["project"],"title":"list_registry_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/list_group_registry_repositories":{"post":{"operationId":"list_group_registry_repositories","summary":"List the container registry repositories of all projects in a group with location and project. Use for \"Which container ","description":"List the container registry repositories of all projects in a group with location and project. Use for \"Which container images exist across gitlab-org\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group":{"description":"Numeric group ID, or the full group path such as 'gitlab-org' (slashes are encoded for you).","maxLength":200,"title":"Group","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["group"],"title":"list_group_registry_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/list_registry_tags":{"post":{"operationId":"list_registry_tags","summary":"List the tags (names and image locations) of one container registry repository. Use for \"Which tags does registry reposi","description":"List the tags (names and image locations) of one container registry repository. Use for \"Which tags does registry repository 55 of gitlab-org/gitlab have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Numeric project ID, or the full path with namespace such as 'gitlab-org/gitlab' (slashes are encoded for you).","maxLength":200,"title":"Project","type":"string"},"repository_id":{"description":"Numeric ID of the container registry repository (from list_registry_repositories).","title":"Repository Id","type":"integer"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["project","repository_id"],"title":"list_registry_tagsArguments","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_registry_tag":{"post":{"operationId":"get_registry_tag","summary":"Get one container image tag: digest, revision, creation time and total size. Use for \"What is the digest and size of tag","description":"Get one container image tag: digest, revision, creation time and total size. Use for \"What is the digest and size of tag 'latest' in registry repository 55 of gitlab-org/gitlab\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Numeric project ID, or the full path with namespace such as 'gitlab-org/gitlab' (slashes are encoded for you).","maxLength":200,"title":"Project","type":"string"},"repository_id":{"description":"Numeric ID of the container registry repository (from list_registry_repositories).","title":"Repository Id","type":"integer"},"tag_name":{"description":"Image tag name, for example 'latest'.","maxLength":200,"title":"Tag Name","type":"string"}},"required":["project","repository_id","tag_name"],"title":"get_registry_tagArguments","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_project_releases":{"post":{"operationId":"list_project_releases","summary":"List a project's releases, newest first, with tag, name, notes, release date and author. Use for \"What are the latest re","description":"List a project's releases, newest first, with tag, name, notes, release date and author. Use for \"What are the latest releases of gitlab-org/gitlab\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Numeric project ID, or the full path with namespace such as 'gitlab-org/gitlab' (slashes are encoded for you).","maxLength":200,"title":"Project","type":"string"},"order_by":{"anyOf":[{"enum":["released_at","created_at"],"type":"string"},{"type":"null"}],"default":"released_at","description":"Order by released_at (default) or created_at.","title":"Order By"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: desc (default) or asc.","title":"Sort"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["project"],"title":"list_project_releasesArguments","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_project_release":{"post":{"operationId":"get_project_release","summary":"Get one project release by its tag name with notes, release date, author and commit. Use for \"Show the release notes of ","description":"Get one project release by its tag name with notes, release date, author and commit. Use for \"Show the release notes of v1.0.0 in gitlab-org/gitlab\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Numeric project ID, or the full path with namespace such as 'gitlab-org/gitlab' (slashes are encoded for you).","maxLength":200,"title":"Project","type":"string"},"tag_name":{"description":"Git tag the release belongs to, for example 'v1.0.0'.","maxLength":200,"title":"Tag Name","type":"string"}},"required":["project","tag_name"],"title":"get_project_releaseArguments","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}}}}