jService · Capability

jService Trivia API — Categories

Categories — Jeopardy! category collections. 2 operations. Lead operation: List Categories. Self-contained Naftiko capability covering one jService business surface (category browsing and drill-down on the open-source jService Rails API).

Run with Naftiko JserviceTriviaCategories

What You Can Do

GET
Listcategories — List categories with pagination.
/v1/categories
GET
Getcategory — Get a single category and its clues.
/v1/category

MCP Tools

list-categories

List Jeopardy! categories with pagination.

read-only idempotent
get-category

Get a single Jeopardy! category by ID, including its clues.

read-only idempotent

Capability Spec

jservice-categories.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "jService Trivia API — Categories"
  description: >-
    Categories — Jeopardy! category collections. 2 operations. Lead operation:
    List Categories. Self-contained Naftiko capability covering one jService business
    surface (category browsing and drill-down on the open-source jService Rails API).
  tags:
    - Jservice
    - Trivia
    - Categories
  created: "2026-05-30"
  modified: "2026-05-30"

binds:
  - namespace: env
    keys:
      JSERVICE_BASE_URL: JSERVICE_BASE_URL

capability:

  consumes:
    - type: http
      namespace: "jservice-categories"
      baseUri: "{{env.JSERVICE_BASE_URL}}"
      description: "jService Trivia API — Categories business capability. Self-contained, no shared references."
      resources:
        - name: "categories"
          path: "/api/categories"
          operations:
            - name: "listCategories"
              method: GET
              description: "List categories (default 1, max 100) with offset pagination."
              inputParameters:
                - name: "count"
                  in: query
                  type: integer
                  required: false
                  description: "Number of categories to return (1-100)."
                - name: "offset"
                  in: query
                  type: integer
                  required: false
                  description: "Pagination offset."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "category"
          path: "/api/category"
          operations:
            - name: "getCategory"
              method: GET
              description: "Get one category by ID, including its clues."
              inputParameters:
                - name: "id"
                  in: query
                  type: integer
                  required: true
                  description: "Category ID."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."

  exposes:
    - type: rest
      namespace: "jservice-categories-rest"
      port: 8080
      description: "REST adapter for jService — Categories. One Spectral-compliant resource per consumed operation, prefixed with /v1."
      resources:
        - path: "/v1/categories"
          name: "categories"
          description: "REST surface for category browsing."
          operations:
            - method: GET
              name: "listCategories"
              description: "List categories with pagination."
              call: "jservice-categories.listCategories"
              with:
                "count": "rest.count"
                "offset": "rest.offset"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/category"
          name: "category"
          description: "REST surface for single-category lookup including clues."
          operations:
            - method: GET
              name: "getCategory"
              description: "Get a single category and its clues."
              call: "jservice-categories.getCategory"
              with:
                "id": "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      namespace: "jservice-categories-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for jService — Categories. One tool per consumed operation, routed inline through this capability's consumes block."
      tools:
        - name: "list-categories"
          description: "List Jeopardy! categories with pagination."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "jservice-categories.listCategories"
          with:
            "count": "tools.count"
            "offset": "tools.offset"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-category"
          description: "Get a single Jeopardy! category by ID, including its clues."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "jservice-categories.getCategory"
          with:
            "id": "tools.id"
          outputParameters:
            - type: object
              mapping: "$."