NuGet · Capability

NuGet Catalog API

The NuGet Catalog API is an append-only resource that records the full history of all package events on nuget.org, including packages being added, modified, listed, unlisted, deleted, deprecated, and having vulnerability status updated. It provides a chronologically ordered log of every change to the package source, enabling consumers to build and maintain their own local copy of the entire set of packages available on nuget.org. The catalog is indexed by time and uses a hierarchical structure of index, pages, and leaves. Not all package sources implement the catalog resource.

Run with Naftiko NugetAPI

What You Can Do

GET
Getcatalogindex — Get the catalog index
/index.json
GET
Getcatalogpage — Get a catalog page
/{pageName}.json
GET
Getcatalogleaf — Get a catalog leaf
/data/{timestamp}/{packageId}.{version}.json

MCP Tools

getcatalogindex

Get the catalog index

read-only idempotent
getcatalogpage

Get a catalog page

read-only idempotent
getcatalogleaf

Get a catalog leaf

read-only idempotent

Capability Spec

nuget-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: NuGet Catalog API
  description: The NuGet Catalog API is an append-only resource that records the full history of all package events on nuget.org,
    including packages being added, modified, listed, unlisted, deleted, deprecated, and having vulnerability status updated.
    It provides a chronologically ordered log of every change to the package source, enabling consumers to build and maintain
    their own local copy of the entire set of packages available on nuget.org. The catalog is indexed by time and uses a hierarchical
    structure of index, pages, and leaves. Not all package sources implement the catalog resource.
  tags:
  - Nuget
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: nuget
    baseUri: https://api.nuget.org/v3/catalog0
    description: NuGet Catalog API HTTP API.
    resources:
    - name: index-json
      path: /index.json
      operations:
      - name: getcatalogindex
        method: GET
        description: Get the catalog index
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: pagename-json
      path: /{pageName}.json
      operations:
      - name: getcatalogpage
        method: GET
        description: Get a catalog page
        inputParameters:
        - name: pageName
          in: path
          type: string
          required: true
          description: The page identifier, discovered from the catalog index.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: data-timestamp-packageid-version-json
      path: /data/{timestamp}/{packageId}.{version}.json
      operations:
      - name: getcatalogleaf
        method: GET
        description: Get a catalog leaf
        inputParameters:
        - name: timestamp
          in: path
          type: string
          required: true
          description: The timestamp path segment, discovered from the catalog page.
        - name: packageId
          in: path
          type: string
          required: true
          description: The lowercased package ID.
        - name: version
          in: path
          type: string
          required: true
          description: The lowercased package version.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: nuget-rest
    description: REST adapter for NuGet Catalog API.
    resources:
    - path: /index.json
      name: getcatalogindex
      operations:
      - method: GET
        name: getcatalogindex
        description: Get the catalog index
        call: nuget.getcatalogindex
        outputParameters:
        - type: object
          mapping: $.
    - path: /{pageName}.json
      name: getcatalogpage
      operations:
      - method: GET
        name: getcatalogpage
        description: Get a catalog page
        call: nuget.getcatalogpage
        with:
          pageName: rest.pageName
        outputParameters:
        - type: object
          mapping: $.
    - path: /data/{timestamp}/{packageId}.{version}.json
      name: getcatalogleaf
      operations:
      - method: GET
        name: getcatalogleaf
        description: Get a catalog leaf
        call: nuget.getcatalogleaf
        with:
          timestamp: rest.timestamp
          packageId: rest.packageId
          version: rest.version
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: nuget-mcp
    transport: http
    description: MCP adapter for NuGet Catalog API for AI agent use.
    tools:
    - name: getcatalogindex
      description: Get the catalog index
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: nuget.getcatalogindex
      outputParameters:
      - type: object
        mapping: $.
    - name: getcatalogpage
      description: Get a catalog page
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: nuget.getcatalogpage
      with:
        pageName: tools.pageName
      inputParameters:
      - name: pageName
        type: string
        description: The page identifier, discovered from the catalog index.
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getcatalogleaf
      description: Get a catalog leaf
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: nuget.getcatalogleaf
      with:
        timestamp: tools.timestamp
        packageId: tools.packageId
        version: tools.version
      inputParameters:
      - name: timestamp
        type: string
        description: The timestamp path segment, discovered from the catalog page.
        required: true
      - name: packageId
        type: string
        description: The lowercased package ID.
        required: true
      - name: version
        type: string
        description: The lowercased package version.
        required: true
      outputParameters:
      - type: object
        mapping: $.