{"openapi":"3.1.0","info":{"title":"Hex (BYOK) API","version":"0.1.0","description":"Hex (BYOK) lets an AI assistant read your own Hex data through the Hex API with a key you supply (Hex API key). Read-only: 9 tools (get_current_user, search_packages, get_package, get_release, list_repository_packages, list_repositories, list_organizations, get_organization, list_organization_members). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-hexpm.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-hexpm/docs"},"termsOfService":"https://connectorbay.com/byok-hexpm/terms"},"servers":[{"url":"https://byok-hexpm.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-hexpm/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_current_user":{"post":{"operationId":"get_current_user","summary":"Show the Hex account the key belongs to: username, email, the organizations it is a member of with its role in each, and","description":"Show the Hex account the key belongs to: username, email, the organizations it is a member of with its role in each, and timestamps. Use for \"Which Hex account and organizations does my key belong to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_current_userArguments","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 or list public Hex packages with description, license, download counts and latest version. Up to 100 per page. Us","description":"Search or list public Hex packages with description, license, download counts and latest version. Up to 100 per page. Use for \"What are the most downloaded Hex packages about authentication\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text: matches package names (wildcard) and descriptions. Field syntax such as 'name:nerves*' or 'extra:type,nerves' is also accepted.","title":"Search"},"sort":{"anyOf":[{"enum":["name","recent_downloads","total_downloads","downloads","inserted_at","updated_at"],"type":"string"},{"type":"null"}],"default":"name","description":"Sort field: name (ascending), recent_downloads (last 90 days), total_downloads, inserted_at or updated_at (descending).","title":"Sort"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Collections return up to 100 items per page.","title":"Page"}},"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/get_package":{"post":{"operationId":"get_package","summary":"Get one Hex package: description, licenses, links, owners, download counts, release list with versions, retirements and ","description":"Get one Hex package: description, licenses, links, owners, download counts, release list with versions, retirements and security advisories. Use for \"What is the latest version of the plug package and are there security advisories\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Package name, for example 'phoenix' or 'plug'.","maxLength":100,"title":"Name","type":"string"}},"required":["name"],"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/get_release":{"post":{"operationId":"get_release","summary":"Get one version of a Hex package: checksum, build tools, dependency requirements, retirement status, download count, pub","description":"Get one version of a Hex package: checksum, build tools, dependency requirements, retirement status, download count, publisher and security advisories. Use for \"What dependencies does phoenix 1.7.14 require\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Package name, for example 'phoenix' or 'plug'.","maxLength":100,"title":"Name","type":"string"},"version":{"description":"Release version in semantic versioning form, for example '1.7.14'.","maxLength":100,"title":"Version","type":"string"}},"required":["name","version"],"title":"get_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}},"/v1/tools/list_repository_packages":{"post":{"operationId":"list_repository_packages","summary":"List packages in one Hex repository, such as an organization's private packages when the key has access. Up to 100 per p","description":"List packages in one Hex repository, such as an organization's private packages when the key has access. Up to 100 per page. Use for \"Which private packages does my acme organization have on Hex\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"repository":{"description":"Repository (organization) name that holds private packages, for example 'acme'; use 'hexpm' for the public repository.","maxLength":100,"title":"Repository","type":"string"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text: matches package names (wildcard) and descriptions. Field syntax such as 'name:nerves*' or 'extra:type,nerves' is also accepted.","title":"Search"},"sort":{"anyOf":[{"enum":["name","recent_downloads","total_downloads","downloads","inserted_at","updated_at"],"type":"string"},{"type":"null"}],"default":"name","description":"Sort field: name (ascending), recent_downloads (last 90 days), total_downloads, inserted_at or updated_at (descending).","title":"Sort"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Collections return up to 100 items per page.","title":"Page"}},"required":["repository"],"title":"list_repository_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_repositories":{"post":{"operationId":"list_repositories","summary":"List public Hex repositories plus the private ones the key is a member of, with creation and update times. Use for \"Whic","description":"List public Hex repositories plus the private ones the key is a member of, with creation and update times. Use for \"Which Hex repositories can my key see\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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/list_organizations":{"post":{"operationId":"list_organizations","summary":"List the Hex organizations the key's account belongs to, with billing status. Use for \"Which Hex organizations am I a me","description":"List the Hex organizations the key's account belongs to, with billing status. Use for \"Which Hex organizations am I a member of\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_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/get_organization":{"post":{"operationId":"get_organization","summary":"Get one Hex organization: billing status, number of seats and timestamps. Use for \"How many seats does my Hex organizati","description":"Get one Hex organization: billing status, number of seats and timestamps. Use for \"How many seats does my Hex organization acme have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Organization name, for example 'acme'.","maxLength":100,"title":"Name","type":"string"}},"required":["name"],"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_organization_members":{"post":{"operationId":"list_organization_members","summary":"List the members of a Hex organization with their username and role (admin, write or read). Use for \"Who are the members","description":"List the members of a Hex organization with their username and role (admin, write or read). Use for \"Who are the members of my Hex organization acme\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Organization name, for example 'acme'.","maxLength":100,"title":"Name","type":"string"}},"required":["name"],"title":"list_organization_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}}}}