RubyGems.org Registry API — Gems

Gems surface — Gems. 5 operations. Lead operation: Get Gem Info. Self-contained Naftiko capability covering one RubyGems business surface.

RubyGems.org Registry API — Gems is a Naftiko capability published by Ruby Programming Language and Popular API Gems, one of 9 capabilities the APIs.io network indexes for this provider. It bundles 5 operations across the GET, POST, and DELETE methods.

The capability includes 3 read-only operations and 2 state-changing operations. Lead operation: Get Gem Info. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include RubyGems, Registry, and Gems.

Run with Naftiko RubyGemsRegistryGems

What You Can Do

GET
Getgem — Get Gem Info.
/v1/gems/{gem-name}
GET
Listownedgems — List gems owned by the authenticated user.
/v1/gems
POST
Pushgem — Push a built .gem file for publication.
/v1/gems
DELETE
Yankversion — Yank a specific gem version from the index.
/v1/gems/yank
GET
Searchgems — Search gems by name or description.
/v1/search

MCP Tools

get-gem

Get Gem Info.

read-only idempotent
list-owned-gems

List gems owned by the authenticated user.

read-only idempotent
push-gem

Push a built .gem file for publication.

yank-version

Yank a specific gem version from the index.

idempotent
search-gems

Search gems by name or description.

read-only idempotent

Capability Spec

rubygems-registry-gems.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "RubyGems.org Registry API — Gems"
  description: >-
    Gems surface — Gems. 5 operations. Lead operation: Get Gem Info.
    Self-contained Naftiko capability covering one RubyGems business surface.
  tags:
    - RubyGems
    - Registry
    - Gems
  created: "2026-05-23"
  modified: "2026-05-23"

binds:
  - namespace: env
    keys:
      RUBYGEMS_API_KEY: RUBYGEMS_API_KEY

capability:

  consumes:
    - type: http
      namespace: "rubygems-registry-gems"
      baseUri: "https://rubygems.org"
      description: "RubyGems.org Registry — Gems surface. Self-contained, no shared references."
      authentication:
        type: apikey
        key: Authorization
        value: "{{env.RUBYGEMS_API_KEY}}"
        placement: header
      resources:
        - name: "gem-detail"
          path: "/api/v1/gems/{gem_name}.json"
          operations:
            - name: "getGem"
              method: GET
              description: "Get Gem Info."
              inputParameters:
                - name: "gem_name"
                  in: path
                  type: string
                  required: true
                  description: "Canonical gem name."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "owned-gems"
          path: "/api/v1/gems.json"
          operations:
            - name: "listOwnedGems"
              method: GET
              description: "List gems owned by the authenticated user."
              inputParameters: []
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
            - name: "pushGem"
              method: POST
              description: "Push a built .gem file for publication."
              inputParameters:
                - name: "body"
                  in: body
                  type: object
                  required: true
                  description: "Binary .gem file payload."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "yank"
          path: "/api/v1/gems/yank"
          operations:
            - name: "yankVersion"
              method: DELETE
              description: "Yank a specific gem version from the index."
              inputParameters:
                - name: "gem_name"
                  in: query
                  type: string
                  required: true
                  description: "Gem name."
                - name: "version"
                  in: query
                  type: string
                  required: true
                  description: "Version to yank."
                - name: "platform"
                  in: query
                  type: string
                  required: false
                  description: "Optional platform identifier."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "search"
          path: "/api/v1/search.json"
          operations:
            - name: "searchGems"
              method: GET
              description: "Search gems by name or description."
              inputParameters:
                - name: "query"
                  in: query
                  type: string
                  required: true
                  description: "Search query string."
                - name: "page"
                  in: query
                  type: integer
                  required: false
                  description: "Page number, 1-indexed."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."

  exposes:
    - type: rest
      namespace: "rubygems-registry-gems-rest"
      port: 8080
      description: "REST adapter for RubyGems.org Registry — Gems."
      resources:
        - path: "/v1/gems/{gem-name}"
          name: "gem-detail"
          description: "REST surface for gem detail."
          operations:
            - method: GET
              name: "getGem"
              description: "Get Gem Info."
              call: "rubygems-registry-gems.getGem"
              with:
                gem_name: "rest.gem_name"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/gems"
          name: "owned-gems"
          description: "REST surface for the authenticated user's gems collection."
          operations:
            - method: GET
              name: "listOwnedGems"
              description: "List gems owned by the authenticated user."
              call: "rubygems-registry-gems.listOwnedGems"
              with: {}
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: "pushGem"
              description: "Push a built .gem file for publication."
              call: "rubygems-registry-gems.pushGem"
              with:
                body: "rest.body"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/gems/yank"
          name: "yank"
          description: "REST surface for yanking a gem version."
          operations:
            - method: DELETE
              name: "yankVersion"
              description: "Yank a specific gem version from the index."
              call: "rubygems-registry-gems.yankVersion"
              with:
                gem_name: "rest.gem_name"
                version: "rest.version"
                platform: "rest.platform"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/search"
          name: "search"
          description: "REST surface for gem search."
          operations:
            - method: GET
              name: "searchGems"
              description: "Search gems by name or description."
              call: "rubygems-registry-gems.searchGems"
              with:
                query: "rest.query"
                page: "rest.page"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      namespace: "rubygems-registry-gems-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for RubyGems.org Registry — Gems."
      tools:
        - name: "get-gem"
          description: "Get Gem Info."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "rubygems-registry-gems.getGem"
          with:
            gem_name: "tools.gem_name"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "list-owned-gems"
          description: "List gems owned by the authenticated user."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "rubygems-registry-gems.listOwnedGems"
          with: {}
          outputParameters:
            - type: object
              mapping: "$."
        - name: "push-gem"
          description: "Push a built .gem file for publication."
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "rubygems-registry-gems.pushGem"
          with:
            body: "tools.body"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "yank-version"
          description: "Yank a specific gem version from the index."
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "rubygems-registry-gems.yankVersion"
          with:
            gem_name: "tools.gem_name"
            version: "tools.version"
            platform: "tools.platform"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "search-gems"
          description: "Search gems by name or description."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "rubygems-registry-gems.searchGems"
          with:
            query: "tools.query"
            page: "tools.page"
          outputParameters:
            - type: object
              mapping: "$."