{"openapi":"3.1.0","info":{"title":"npm (BYOK) API","version":"0.1.0","description":"npm (BYOK) lets an AI assistant read your own npm data through the npm API with a key you supply (npm access token). Read-only: 11 tools (search_packages, get_package_version, get_version_status, get_package_visibility, list_package_collaborators, list_org_users, list_org_teams, list_org_packages, list_team_users, list_team_packages, list_access_tokens). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-npm.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-npm/docs"},"termsOfService":"https://connectorbay.com/byok-npm/terms"},"servers":[{"url":"https://byok-npm.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-npm/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/search_packages":{"post":{"operationId":"search_packages","summary":"Search the npm registry by keywords (supports qualifiers such as author: and keywords:); returns name, version, license,","description":"Search the npm registry by keywords (supports qualifiers such as author: and keywords:); returns name, version, license, publisher, dates, links and weekly or monthly downloads. Use for \"Find npm packages for parsing command line arguments\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Search text, for example 'cli argument parser' or 'author:sindresorhus'.","maxLength":200,"title":"Text","type":"string"},"size":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 250, default 20).","title":"Size"},"offset":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Result offset for paging.","title":"Offset"}},"required":["text"],"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_version":{"post":{"operationId":"get_package_version","summary":"Get one published version of a package (use 'latest' for the newest): description, license, homepage, dependencies, tarb","description":"Get one published version of a package (use 'latest' for the newest): description, license, homepage, dependencies, tarball URL and publisher. Use for \"What is the latest version of express and what does it depend on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"package":{"description":"Package name, for example 'lodash' or a scoped name such as '@types/node' (encoded for you).","maxLength":200,"title":"Package","type":"string"},"version":{"description":"Exact version such as '4.19.2', or the word 'latest'.","maxLength":200,"title":"Version","type":"string"}},"required":["package","version"],"title":"get_package_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/get_version_status":{"post":{"operationId":"get_version_status","summary":"Get the lifecycle status of an exact package version: published, validating, staged, blocked or deleted. Use for \"Is lod","description":"Get the lifecycle status of an exact package version: published, validating, staged, blocked or deleted. Use for \"Is lodash 4.17.21 still published\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"package":{"description":"Package name, for example 'lodash' or a scoped name such as '@types/node' (encoded for you).","maxLength":200,"title":"Package","type":"string"},"version":{"description":"Exact version, for example '4.17.21'.","maxLength":200,"title":"Version","type":"string"}},"required":["package","version"],"title":"get_version_statusArguments","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_visibility":{"post":{"operationId":"get_package_visibility","summary":"Show whether a package is public or private (and related access flags) for a package you can see. Use for \"Is my package","description":"Show whether a package is public or private (and related access flags) for a package you can see. Use for \"Is my package @myorg/core private\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"package":{"description":"Package name, for example 'lodash' or a scoped name such as '@types/node' (encoded for you).","maxLength":200,"title":"Package","type":"string"}},"required":["package"],"title":"get_package_visibilityArguments","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_collaborators":{"post":{"operationId":"list_package_collaborators","summary":"List the users who can access a package and the access level (read or write) each one has. Use for \"Who has write access","description":"List the users who can access a package and the access level (read or write) each one has. Use for \"Who has write access to @myorg/core\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"package":{"description":"Package name, for example 'lodash' or a scoped name such as '@types/node' (encoded for you).","maxLength":200,"title":"Package","type":"string"}},"required":["package"],"title":"list_package_collaboratorsArguments","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_users":{"post":{"operationId":"list_org_users","summary":"List the members of an npm organization with their role (owner, admin or developer). Use for \"Who belongs to the myorg n","description":"List the members of an npm organization with their role (owner, admin or developer). Use for \"Who belongs to the myorg npm organization\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"npm organization name without the leading @, for example 'myorg'.","maxLength":200,"title":"Org","type":"string"}},"required":["org"],"title":"list_org_usersArguments","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 names of the teams in an npm organization. Use for \"Which teams does the myorg npm organization have\".","description":"List the names of the teams in an npm organization. Use for \"Which teams does the myorg npm organization have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"npm organization name without the leading @, for example 'myorg'.","maxLength":200,"title":"Org","type":"string"}},"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/list_org_packages":{"post":{"operationId":"list_org_packages","summary":"List the packages an npm organization owns with the access level of the calling token (read or write). Use for \"Which pa","description":"List the packages an npm organization owns with the access level of the calling token (read or write). Use for \"Which packages does the myorg organization publish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"npm organization name without the leading @, for example 'myorg'.","maxLength":200,"title":"Org","type":"string"}},"required":["org"],"title":"list_org_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_team_users":{"post":{"operationId":"list_team_users","summary":"List the usernames that belong to one team of an npm organization. Use for \"Who is on the developers team of myorg\".","description":"List the usernames that belong to one team of an npm organization. Use for \"Who is on the developers team of myorg\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"npm organization name without the leading @, for example 'myorg'.","maxLength":200,"title":"Org","type":"string"},"team":{"description":"Team name inside the organization, for example 'developers'.","maxLength":200,"title":"Team","type":"string"}},"required":["org","team"],"title":"list_team_usersArguments","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_packages":{"post":{"operationId":"list_team_packages","summary":"List the packages a team can access with the access level (read or write). Use for \"Which packages can the developers te","description":"List the packages a team can access with the access level (read or write). Use for \"Which packages can the developers team of myorg publish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org":{"description":"npm organization name without the leading @, for example 'myorg'.","maxLength":200,"title":"Org","type":"string"},"team":{"description":"Team name inside the organization, for example 'developers'.","maxLength":200,"title":"Team","type":"string"}},"required":["org","team"],"title":"list_team_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_access_tokens":{"post":{"operationId":"list_access_tokens","summary":"List the calling account's npm access tokens with name, read-only flag, creation, last use, expiry and revocation dates ","description":"List the calling account's npm access tokens with name, read-only flag, creation, last use, expiry and revocation dates (token values are not returned). Needs a session token, not a restricted access token. Use for \"Which of my npm tokens are expiring or revoked\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Tokens per page.","title":"Per Page"}},"title":"list_access_tokensArguments","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}}}}