{"openapi":"3.1.0","info":{"title":"Codeberg Organizations (BYOK) API","version":"0.1.0","description":"Codeberg Organizations (BYOK) lets an AI assistant read your own Codeberg Organizations data through the Codeberg Organizations API with a key you supply (Codeberg access token (read:organization scope)). Read-only: 12 tools (get_organization, list_my_organizations, list_user_organizations, list_org_members, list_org_teams, search_org_teams, get_team, list_team_members, list_team_repositories,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-codeberg-organizations.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-codeberg-organizations/docs"},"termsOfService":"https://connectorbay.com/byok-codeberg-organizations/terms"},"servers":[{"url":"https://byok-codeberg-organizations.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-codeberg-organizations/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_organization":{"post":{"operationId":"get_organization","summary":"Get one organization: name, full name, description, website, location and visibility. Use for \"Tell me about the Codeber","description":"Get one organization: name, full name, description, website, location and visibility. Use for \"Tell me about the Codeberg organization forgejo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Organization name (its URL slug), for example 'forgejo'.","maxLength":100,"title":"Org","type":"string"}},"required":["org"],"title":"get_organizationArguments","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_my_organizations":{"post":{"operationId":"list_my_organizations","summary":"List the organizations the token's account belongs to. Use for \"Which Codeberg organizations am I part of\".","description":"List the organizations the token's account belongs to. Use for \"Which Codeberg organizations am I part of\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"title":"list_my_organizationsArguments","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_user_organizations":{"post":{"operationId":"list_user_organizations","summary":"List the public organizations a user belongs to. Use for \"Which organizations is the Codeberg user janedoe a member of\".","description":"List the public organizations a user belongs to. Use for \"Which organizations is the Codeberg user janedoe a member of\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"username":{"description":"Codeberg username, for example 'janedoe'.","maxLength":100,"title":"Username","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["username"],"title":"list_user_organizationsArguments","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_org_members":{"post":{"operationId":"list_org_members","summary":"List the members of an organization with username, full name, location and join date; email addresses are left out. Use ","description":"List the members of an organization with username, full name, location and join date; email addresses are left out. Use for \"Who are the members of the Codeberg organization forgejo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Organization name (its URL slug), for example 'forgejo'.","maxLength":100,"title":"Org","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["org"],"title":"list_org_membersArguments","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_org_teams":{"post":{"operationId":"list_org_teams","summary":"List the teams of an organization with permission level and whether they cover all repositories. Use for \"What teams doe","description":"List the teams of an organization with permission level and whether they cover all repositories. Use for \"What teams does the Codeberg organization forgejo have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Organization name (its URL slug), for example 'forgejo'.","maxLength":100,"title":"Org","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["org"],"title":"list_org_teamsArguments","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_org_teams":{"post":{"operationId":"search_org_teams","summary":"Search an organization's teams by keyword in the name and optionally the description. Use for \"Find teams called 'mainta","description":"Search an organization's teams by keyword in the name and optionally the description. Use for \"Find teams called 'maintainers' in the Codeberg organization forgejo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Organization name (its URL slug), for example 'forgejo'.","maxLength":100,"title":"Org","type":"string"},"q":{"description":"Keywords to look for in team names.","maxLength":100,"title":"Q","type":"string"},"include_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"False to search names only; the default also searches descriptions.","title":"Include Desc"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["org","q"],"title":"search_org_teamsArguments","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_team":{"post":{"operationId":"get_team","summary":"Get one team by numeric ID: name, description, permission level and repository coverage. Use for \"Describe team 12 on Co","description":"Get one team by numeric ID: name, description, permission level and repository coverage. Use for \"Describe team 12 on Codeberg\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric ID of the team (from list_org_teams).","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_teamArguments","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_team_members":{"post":{"operationId":"list_team_members","summary":"List the members of a team with username, full name and join date; email addresses are left out. Use for \"Who is in team","description":"List the members of a team with username, full name and join date; email addresses are left out. Use for \"Who is in team 12 on Codeberg\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric ID of the team (from list_org_teams).","minimum":1,"title":"Id","type":"integer"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["id"],"title":"list_team_membersArguments","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_team_repositories":{"post":{"operationId":"list_team_repositories","summary":"List the repositories a team has access to. Use for \"Which repositories can team 12 access on Codeberg\".","description":"List the repositories a team has access to. Use for \"Which repositories can team 12 access on Codeberg\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric ID of the team (from list_org_teams).","minimum":1,"title":"Id","type":"integer"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["id"],"title":"list_team_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_org_repositories":{"post":{"operationId":"list_org_repositories","summary":"List an organization's repositories with language, stars, forks, open issues and last update. Use for \"What repositories","description":"List an organization's repositories with language, stars, forks, open issues and last update. Use for \"What repositories does the Codeberg organization forgejo own\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Organization name (its URL slug), for example 'forgejo'.","maxLength":100,"title":"Org","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["org"],"title":"list_org_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_org_labels":{"post":{"operationId":"list_org_labels","summary":"List the labels defined at organization level with colour, description and whether they are exclusive. Use for \"Which la","description":"List the labels defined at organization level with colour, description and whether they are exclusive. Use for \"Which labels does the Codeberg organization forgejo define\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"Organization name (its URL slug), for example 'forgejo'.","maxLength":100,"title":"Org","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["org"],"title":"list_org_labelsArguments","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_owner_packages":{"post":{"operationId":"list_owner_packages","summary":"List the packages (container images, npm, PyPI, generic and others) published by a user or organization, optionally by t","description":"List the packages (container images, npm, PyPI, generic and others) published by a user or organization, optionally by type or name. Use for \"Which packages does the Codeberg organization forgejo publish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"owner":{"description":"User or organization name that owns the packages, for example 'forgejo'.","maxLength":100,"title":"Owner","type":"string"},"type":{"anyOf":[{"enum":["alpine","cargo","chef","composer","conan","conda","container","cran","debian","generic","go","helm","maven","npm","nuget","pub","pypi","rpm","rubygems","swift","vagrant"],"type":"string"},{"type":"null"}],"default":null,"description":"Only packages of this type.","title":"Type"},"q":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only packages whose name matches this text.","title":"Q"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Results per page (1 to 50; the server's default maximum page size is 50).","title":"Limit"}},"required":["owner"],"title":"list_owner_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}}}}