{"openapi":"3.0.3","info":{"title":"Gnist Context — Package Registry","description":"Package metadata and vulnerability data from npm, PyPI, crates.io, and OSV.\n\n- **MCP endpoint:** `https://context.gnist.ai/mcp/package-registry/`\n- **Toolkit page:** `/toolkits/package-registry`\n- **Full API spec:** `/api/openapi.json`\n- **Get an API key:** `/signup`","version":"1.0.0","contact":{"name":"GnistAI","url":"https://gnist.ai"}},"servers":[{"url":"https://context.gnist.ai","description":"Production"}],"paths":{"/rest/package-registry/get_package":{"post":{"tags":["Software"],"summary":"get_package","description":"Get metadata for a package — latest version, description, license, maintainers.\n\nArgs:\n    ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.\n    name: Package name (e.g. 'express', 'requests', 'tokio').\n\nReturns:\n    Package metadata including version, description, license, homepage,\n    repository URL, maintainers, and keywords.","operationId":"package_registry_get_package","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"ecosystem":{"description":"Package ecosystem: 'npm', 'pypi', or 'crates'.","type":"string"},"name":{"description":"Package name (e.g. 'express', 'requests', 'tokio').","type":"string"}},"required":["ecosystem","name"],"type":"object"}}}}}},"/rest/package-registry/get_package_versions":{"post":{"tags":["Software"],"summary":"get_package_versions","description":"Get full release history for a package with publish timestamps.\n\nArgs:\n    ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.\n    name: Package name.\n\nReturns:\n    Dictionary with count and versions list (version string + published_at timestamp).","operationId":"package_registry_get_package_versions","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"ecosystem":{"description":"Package ecosystem: 'npm', 'pypi', or 'crates'.","type":"string"},"name":{"description":"Package name.","type":"string"}},"required":["ecosystem","name"],"type":"object"}}}}}},"/rest/package-registry/get_download_stats":{"post":{"tags":["Software"],"summary":"get_download_stats","description":"Get download statistics for a package.\n\nArgs:\n    ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.\n    name: Package name.\n    period: Time period — 'last-week' or 'last-month' (npm and PyPI).\n            crates.io always returns recent 90-day downloads.\n\nReturns:\n    Dictionary with ecosystem, name, period, and download count.","operationId":"package_registry_get_download_stats","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"ecosystem":{"description":"Package ecosystem: 'npm', 'pypi', or 'crates'.","type":"string"},"name":{"description":"Package name.","type":"string"},"period":{"default":"last-week","description":"Time period — 'last-week' or 'last-month' (npm and PyPI). crates.io always returns recent 90-day downloads.","type":"string"}},"required":["ecosystem","name"],"type":"object"}}}}}},"/rest/package-registry/get_dependencies":{"post":{"tags":["Software"],"summary":"get_dependencies","description":"Get direct dependencies for a package version.\n\nArgs:\n    ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.\n    name: Package name.\n    version: Specific version string. If omitted, uses the latest release.\n\nReturns:\n    Dictionary with count and dependencies list (name, version_req, kind).\n    For crates, kind may be 'normal', 'dev', or 'build'.","operationId":"package_registry_get_dependencies","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"ecosystem":{"description":"Package ecosystem: 'npm', 'pypi', or 'crates'.","type":"string"},"name":{"description":"Package name.","type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Specific version string. If omitted, uses the latest release."}},"required":["ecosystem","name"],"type":"object"}}}}}},"/rest/package-registry/get_vulnerabilities":{"post":{"tags":["Software"],"summary":"get_vulnerabilities","description":"Get known vulnerabilities for a package via OSV.dev (covers npm, PyPI, crates.io).\n\nArgs:\n    ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.\n    name: Package name.\n    version: Specific version to check. If omitted, returns all known vulns for the package.\n\nReturns:\n    Dictionary with count and vulnerabilities list (OSV ID, summary, severity,\n    aliases like CVE numbers, affected version ranges, references, published/modified dates).","operationId":"package_registry_get_vulnerabilities","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"ecosystem":{"description":"Package ecosystem: 'npm', 'pypi', or 'crates'.","type":"string"},"name":{"description":"Package name.","type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Specific version to check. If omitted, returns all known vulns for the package."}},"required":["ecosystem","name"],"type":"object"}}}}}},"/rest/package-registry/search_packages":{"post":{"tags":["Software"],"summary":"search_packages","description":"Search for packages by keyword across npm, PyPI, or crates.io.\n\nArgs:\n    ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.\n    query: Search keywords (e.g. 'http client async', 'date parsing').\n    limit: Maximum results (1–50, default 20).\n\nReturns:\n    Dictionary with count and packages list (name, version, description, downloads where available).","operationId":"package_registry_search_packages","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"ecosystem":{"description":"Package ecosystem: 'npm', 'pypi', or 'crates'.","type":"string"},"query":{"description":"Search keywords (e.g. 'http client async', 'date parsing').","type":"string"},"limit":{"default":20,"description":"Maximum results (1–50, default 20).","type":"integer"}},"required":["ecosystem","query"],"type":"object"}}}}}},"/rest/package-registry/report_feedback":{"post":{"tags":["Software"],"summary":"report_feedback","description":"Report a bug, feature request, or general feedback for this data source.\n\nUse this when something doesn't work as expected, when you'd like\na new feature, or when you have suggestions for improvement.\n\nArgs:\n    feedback: Describe the issue or suggestion.\n    feedback_type: One of 'bug', 'feature_request', or 'general'.","operationId":"package_registry_report_feedback","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"feedback":{"type":"string"},"feedback_type":{"default":"general","type":"string"}},"required":["feedback"],"type":"object"}}}}}}},"tags":[{"name":"Software","description":"Data sources: Software"}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"gnist-api-key","description":"API key passed via request header."},"ApiKeyQuery":{"type":"apiKey","in":"query","name":"gnist_api_key","description":"API key passed via query parameter."}}}}