RubyGems · Capability

RubyGems Gems API — Gems

RubyGems Gems API — Gems. 7 operations. Lead operation: Get API Key. Self-contained Naftiko capability covering one Rubygems business surface.

Run with Naftiko RubygemsGems

What You Can Do

GET
Getapikey — Get API Key
/v1/api-key-json
POST
Pushgem — Submit A Gem
/v1/gems
GET
Listownedgems — List Gems Owned By The Authenticated User
/v1/gems-json
DELETE
Yankgem — Yank A Gem Version
/v1/gems/yank
GET
Getgeminfo — Get Gem Information
/v1/gems/gemname-json
GET
Getreversedependencies — Get Reverse Dependencies
/v1/gems/{gemname}/reverse-dependencies-json
POST
Exchangeoidctoken — Exchange OIDC Token For API Key
/v1/oidc/trusted-publisher/exchange-token

MCP Tools

get-api-key

Get API Key

read-only idempotent
submit-gem

Submit A Gem

list-gems-owned-authenticated-user

List Gems Owned By The Authenticated User

read-only idempotent
yank-gem-version

Yank A Gem Version

idempotent
get-gem-information

Get Gem Information

read-only idempotent
get-reverse-dependencies

Get Reverse Dependencies

read-only idempotent
exchange-oidc-token-api-key

Exchange OIDC Token For API Key

Capability Spec

gems-gems.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: RubyGems Gems API — Gems
  description: 'RubyGems Gems API — Gems. 7 operations. Lead operation: Get API Key. Self-contained Naftiko capability covering
    one Rubygems business surface.'
  tags:
  - Rubygems
  - Gems
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    RUBYGEMS_API_KEY: RUBYGEMS_API_KEY
capability:
  consumes:
  - type: http
    namespace: gems-gems
    baseUri: https://rubygems.org/api/v1
    description: RubyGems Gems API — Gems business capability. Self-contained, no shared references.
    resources:
    - name: api_key.json
      path: /api_key.json
      operations:
      - name: getapikey
        method: GET
        description: Get API Key
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: gems
      path: /gems
      operations:
      - name: pushgem
        method: POST
        description: Submit A Gem
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: OTP
          in: header
          type: string
          description: One-time passcode for multi-factor authentication if enabled on the account.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: gems.json
      path: /gems.json
      operations:
      - name: listownedgems
        method: GET
        description: List Gems Owned By The Authenticated User
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: gems-yank
      path: /gems/yank
      operations:
      - name: yankgem
        method: DELETE
        description: Yank A Gem Version
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: gem_name
          in: query
          type: string
          description: Name of the gem to yank
          required: true
        - name: version
          in: query
          type: string
          description: Version number to yank
          required: true
        - name: platform
          in: query
          type: string
          description: Platform of the gem version to yank, such as ruby, java, or x86_64-linux.
        - name: OTP
          in: header
          type: string
          description: One-time passcode for multi-factor authentication if enabled on the account.
    - name: gems-gemName}.json
      path: /gems/{gemName}.json
      operations:
      - name: getgeminfo
        method: GET
        description: Get Gem Information
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: gems-gemName-reverse_dependencies.json
      path: /gems/{gemName}/reverse_dependencies.json
      operations:
      - name: getreversedependencies
        method: GET
        description: Get Reverse Dependencies
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: oidc-trusted_publisher-exchange_token
      path: /oidc/trusted_publisher/exchange_token
      operations:
      - name: exchangeoidctoken
        method: POST
        description: Exchange OIDC Token For API Key
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.RUBYGEMS_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: gems-gems-rest
    port: 8080
    description: REST adapter for RubyGems Gems API — Gems. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/api-key-json
      name: api-key-json
      description: REST surface for api_key.json.
      operations:
      - method: GET
        name: getapikey
        description: Get API Key
        call: gems-gems.getapikey
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/gems
      name: gems
      description: REST surface for gems.
      operations:
      - method: POST
        name: pushgem
        description: Submit A Gem
        call: gems-gems.pushgem
        with:
          OTP: rest.OTP
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/gems-json
      name: gems-json
      description: REST surface for gems.json.
      operations:
      - method: GET
        name: listownedgems
        description: List Gems Owned By The Authenticated User
        call: gems-gems.listownedgems
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/gems/yank
      name: gems-yank
      description: REST surface for gems-yank.
      operations:
      - method: DELETE
        name: yankgem
        description: Yank A Gem Version
        call: gems-gems.yankgem
        with:
          gem_name: rest.gem_name
          version: rest.version
          platform: rest.platform
          OTP: rest.OTP
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/gems/gemname-json
      name: gems-gemname-json
      description: REST surface for gems-gemName}.json.
      operations:
      - method: GET
        name: getgeminfo
        description: Get Gem Information
        call: gems-gems.getgeminfo
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/gems/{gemname}/reverse-dependencies-json
      name: gems-gemname-reverse-dependencies-json
      description: REST surface for gems-gemName-reverse_dependencies.json.
      operations:
      - method: GET
        name: getreversedependencies
        description: Get Reverse Dependencies
        call: gems-gems.getreversedependencies
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/oidc/trusted-publisher/exchange-token
      name: oidc-trusted-publisher-exchange-token
      description: REST surface for oidc-trusted_publisher-exchange_token.
      operations:
      - method: POST
        name: exchangeoidctoken
        description: Exchange OIDC Token For API Key
        call: gems-gems.exchangeoidctoken
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: gems-gems-mcp
    port: 9090
    transport: http
    description: MCP adapter for RubyGems Gems API — Gems. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: get-api-key
      description: Get API Key
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gems-gems.getapikey
      outputParameters:
      - type: object
        mapping: $.
    - name: submit-gem
      description: Submit A Gem
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gems-gems.pushgem
      with:
        OTP: tools.OTP
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-gems-owned-authenticated-user
      description: List Gems Owned By The Authenticated User
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gems-gems.listownedgems
      outputParameters:
      - type: object
        mapping: $.
    - name: yank-gem-version
      description: Yank A Gem Version
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: gems-gems.yankgem
      with:
        gem_name: tools.gem_name
        version: tools.version
        platform: tools.platform
        OTP: tools.OTP
      outputParameters:
      - type: object
        mapping: $.
    - name: get-gem-information
      description: Get Gem Information
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gems-gems.getgeminfo
      outputParameters:
      - type: object
        mapping: $.
    - name: get-reverse-dependencies
      description: Get Reverse Dependencies
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gems-gems.getreversedependencies
      outputParameters:
      - type: object
        mapping: $.
    - name: exchange-oidc-token-api-key
      description: Exchange OIDC Token For API Key
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gems-gems.exchangeoidctoken
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.