naftiko: "1.0.0-alpha2" info: label: "RubyGems.org Registry API — Owners" description: >- Owners surface — Owners. 3 operations. Lead operation: List Owners Of A Gem. Self-contained Naftiko capability covering one RubyGems business surface. tags: - RubyGems - Registry - Owners 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-owners" baseUri: "https://rubygems.org" description: "RubyGems.org Registry — Owners surface. Self-contained, no shared references." authentication: type: apikey key: Authorization value: "{{env.RUBYGEMS_API_KEY}}" placement: header resources: - name: "gem-owners" path: "/api/v1/owners/{gem_name}.json" operations: - name: "listOwners" method: GET description: "List owners of a gem." inputParameters: - name: "gem_name" in: path type: string required: true description: "Canonical gem name." outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "addOwner" method: POST description: "Add an owner to a gem." inputParameters: - name: "gem_name" in: path type: string required: true description: "Canonical gem name." - name: "body" in: body type: object required: true description: "Form body containing email." outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "removeOwner" method: DELETE description: "Remove an owner from a gem." inputParameters: - name: "gem_name" in: path type: string required: true description: "Canonical gem name." - name: "body" in: body type: object required: true description: "Form body containing email." outputRawFormat: json outputParameters: - name: result type: object value: "$." exposes: - type: rest namespace: "rubygems-registry-owners-rest" port: 8080 description: "REST adapter for RubyGems.org Registry — Owners." resources: - path: "/v1/gems/{gem-name}/owners" name: "gem-owners" description: "REST surface for gem ownership." operations: - method: GET name: "listOwners" description: "List owners of a gem." call: "rubygems-registry-owners.listOwners" with: gem_name: "rest.gem_name" outputParameters: - type: object mapping: "$." - method: POST name: "addOwner" description: "Add an owner to a gem." call: "rubygems-registry-owners.addOwner" with: gem_name: "rest.gem_name" body: "rest.body" outputParameters: - type: object mapping: "$." - method: DELETE name: "removeOwner" description: "Remove an owner from a gem." call: "rubygems-registry-owners.removeOwner" with: gem_name: "rest.gem_name" body: "rest.body" outputParameters: - type: object mapping: "$." - type: mcp namespace: "rubygems-registry-owners-mcp" port: 9090 transport: http description: "MCP adapter for RubyGems.org Registry — Owners." tools: - name: "list-owners" description: "List owners of a gem." hints: readOnly: true destructive: false idempotent: true call: "rubygems-registry-owners.listOwners" with: gem_name: "tools.gem_name" outputParameters: - type: object mapping: "$." - name: "add-owner" description: "Add an owner to a gem." hints: readOnly: false destructive: false idempotent: false call: "rubygems-registry-owners.addOwner" with: gem_name: "tools.gem_name" body: "tools.body" outputParameters: - type: object mapping: "$." - name: "remove-owner" description: "Remove an owner from a gem." hints: readOnly: false destructive: true idempotent: true call: "rubygems-registry-owners.removeOwner" with: gem_name: "tools.gem_name" body: "tools.body" outputParameters: - type: object mapping: "$."