Skip to content

Package types

NuGetKeep extracts a package version’s declared <packageTypes> from its .nuspec at push and surfaces them across the protocol and UI. A package that declares none is treated as Dependency (the NuGet default).

Any declared type is stored and served verbatim. These four are the known types — they get a friendly badge in the Web UI and are the documented filter values:

TypeMeaning
DotnetToolA .NET global/local tool.
TemplateA dotnet new template package.
MSBuildSdkAn MSBuild project SDK.
McpServerA Model Context Protocol server package.
  • Search (GET /v3/{feed}/search): each result carries "packageTypes": [{ "name": "..." }], and the query accepts a &packageType=<type> filter (case-insensitive exact match — Template does not match TemplateX).
  • Registration leaf (catalogEntry): includes "packageTypes".
  • MCP search_packages tool: surfaces each result’s package types and accepts a packageType filter.
  • Web: a type badge on the Browse grid and the package detail page, plus a package-type filter on Browse.

Types are read from the nuspec; re-push a package to update them. Packages pushed before this feature read as Dependency until re-pushed. Filtering by Dependency returns nothing — the default is a projected read value, not a stored/filterable type; omit the filter to list everything.