{"openapi":"3.1.0","info":{"title":"Packagecloud (BYOK) API","version":"0.1.0","description":"Packagecloud (BYOK) lets an AI assistant read your own Packagecloud data through the Packagecloud API with a key you supply (packagecloud API token (used as the HTTP basic username)). Read-only: 11 tools (list_repositories, get_repository, list_all_packages, search_packages, list_deb_rpm_versions, list_gem_versions, list_gpg_keys, get_repository_install_count, get_gem_download_count,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-packagecloud.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-packagecloud/docs"},"termsOfService":"https://connectorbay.com/byok-packagecloud/terms"},"servers":[{"url":"https://byok-packagecloud.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-packagecloud/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_repositories":{"post":{"operationId":"list_repositories","summary":"List the package repositories of the key's account, optionally including repositories shared with it, with privacy, last","description":"List the package repositories of the key's account, optionally including repositories shared with it, with privacy, last push and package count text. Use for \"Which Packagecloud repositories do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_collaborations":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":null,"description":"Send any value, for example 'true', to also list repositories where the account is a collaborator.","title":"Include Collaborations"}},"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_repository":{"post":{"operationId":"get_repository","summary":"Get one repository: URL, privacy, creation date, last push and package count. Use for \"How many packages are in the acme","description":"Get one repository: URL, privacy, creation date, last push and package count. Use for \"How many packages are in the acme/production repository\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"}},"required":["user_id","repo"],"title":"get_repositoryArguments","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_all_packages":{"post":{"operationId":"list_all_packages","summary":"List every package file in a repository (not grouped by version) with type, distribution, version, filename and uploader","description":"List every package file in a repository (not grouped by version) with type, distribution, version, filename and uploader. Use for \"What package files are in acme/production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return per page (the server caps this at its own maximum; default 30).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["user_id","repo"],"title":"list_all_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/search_packages":{"post":{"operationId":"search_packages","summary":"Search a repository's packages by filename text, package type, distribution or architecture; an empty query lists everyt","description":"Search a repository's packages by filename text, package type, distribution or architecture; an empty query lists everything. Use for \"Find packages whose filename contains 'nginx' in acme/production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"},"q":{"description":"Text to match in the package filename; an empty string returns all packages.","maxLength":200,"title":"Q","type":"string"},"filter":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Package type filter such as rpms, debs, dscs, gem, python or node (ignored when dist is set).","title":"Filter"},"dist":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Distribution name such as ubuntu or el/6; overrides filter.","title":"Dist"},"arch":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Architecture such as x86_64, arm64 or amd64 (Alpine, RPM and Debian only).","title":"Arch"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return per page (the server caps this at its own maximum; default 30).","title":"Per Page"}},"required":["user_id","repo","q"],"title":"search_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_deb_rpm_versions":{"post":{"operationId":"list_deb_rpm_versions","summary":"List all versions of one Debian or RPM package in a repository for a given distribution, release and architecture. Use f","description":"List all versions of one Debian or RPM package in a repository for a given distribution, release and architecture. Use for \"Which versions of the jake rpm exist for Fedora 22 in acme/production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"},"type":{"description":"Package type: rpm or deb.","enum":["rpm","deb"],"title":"Type","type":"string"},"distro":{"description":"Distribution name such as ubuntu, debian or fedora.","maxLength":200,"title":"Distro","type":"string"},"version":{"description":"Distribution release name, for example precise or 22.","maxLength":200,"title":"Version","type":"string"},"package":{"description":"Package name.","maxLength":200,"title":"Package","type":"string"},"arch":{"description":"Architecture; Debian packages use amd64, RPM packages use x86_64.","maxLength":200,"title":"Arch","type":"string"}},"required":["user_id","repo","type","distro","version","package","arch"],"title":"list_deb_rpm_versionsArguments","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_gem_versions":{"post":{"operationId":"list_gem_versions","summary":"List all versions of one RubyGem stored in a repository. Use for \"Which versions of the gem jakedotrb are in acme/produc","description":"List all versions of one RubyGem stored in a repository. Use for \"Which versions of the gem jakedotrb are in acme/production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"},"package":{"description":"Gem name.","maxLength":200,"title":"Package","type":"string"}},"required":["user_id","repo","package"],"title":"list_gem_versionsArguments","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_gpg_keys":{"post":{"operationId":"list_gpg_keys","summary":"List the public GPG signing keys of a repository with name, fingerprint, type and download link. Use for \"Which GPG keys","description":"List the public GPG signing keys of a repository with name, fingerprint, type and download link. Use for \"Which GPG keys sign the acme/production repository\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"}},"required":["user_id","repo"],"title":"list_gpg_keysArguments","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_install_count":{"post":{"operationId":"get_repository_install_count","summary":"Count how many times the repository's install script was used in a date range (owner or collaborator for private reposit","description":"Count how many times the repository's install script was used in a date range (owner or collaborator for private repositories). Use for \"How many installs did acme/production get this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"},"start_date":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 start date such as 20260101Z. The default range is the last 7 days.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 end date such as 20260131Z.","title":"End Date"}},"required":["user_id","repo"],"title":"get_repository_install_countArguments","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_gem_download_count":{"post":{"operationId":"get_gem_download_count","summary":"Count downloads of one RubyGem version in a repository over a date range (owner or collaborator for private repositories","description":"Count downloads of one RubyGem version in a repository over a date range (owner or collaborator for private repositories). Use for \"How often was jakedotrb 0.0.1 downloaded from acme/production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"},"package":{"description":"Gem name.","maxLength":200,"title":"Package","type":"string"},"version":{"description":"Gem version, for example 0.0.1.","maxLength":200,"title":"Version","type":"string"},"start_date":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 start date such as 20260101Z. The default range is the last 7 days.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 end date such as 20260131Z.","title":"End Date"}},"required":["user_id","repo","package","version"],"title":"get_gem_download_countArguments","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_readme":{"post":{"operationId":"get_repository_readme","summary":"Get the README text stored for a repository. Use for \"What is the README of acme/production\".","description":"Get the README text stored for a repository. Use for \"What is the README of acme/production\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"Username or organization that owns the repository, for example 'acme'.","maxLength":200,"title":"User Id","type":"string"},"repo":{"description":"Repository name, for example 'production'.","maxLength":200,"title":"Repo","type":"string"}},"required":["user_id","repo"],"title":"get_repository_readmeArguments","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_distributions":{"post":{"operationId":"list_distributions","summary":"List the Linux distributions and versions Packagecloud supports for deb, dsc and rpm packages. Use for \"Which distributi","description":"List the Linux distributions and versions Packagecloud supports for deb, dsc and rpm packages. Use for \"Which distributions does Packagecloud support for deb packages\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_distributionsArguments","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}}}}