jService · Capability
jService Trivia API — Clues
Clues — Jeopardy! questions, answers, and metadata. 3 operations. Lead operation: Get Random Clues. Self-contained Naftiko capability covering one jService business surface (trivia clue retrieval over the open-source jService Rails API).
What You Can Do
GET
Getrandomclues
— Get N random clues.
/v1/random-clues
GET
Getfinalclues
— Get N random Final Jeopardy clues.
/v1/final-clues
GET
Listclues
— List clues with filters.
/v1/clues
MCP Tools
get-random-clues
Get N random Jeopardy! clues with their categories.
read-only
idempotent
get-final-clues
Get N random Final Jeopardy clues.
read-only
idempotent
list-clues
List clues filtered by value, category, airdate window, and game ID.
read-only
idempotent
Capability Spec
naftiko: "1.0.0-alpha2"
info:
label: "jService Trivia API — Clues"
description: >-
Clues — Jeopardy! questions, answers, and metadata. 3 operations. Lead operation:
Get Random Clues. Self-contained Naftiko capability covering one jService business
surface (trivia clue retrieval over the open-source jService Rails API).
tags:
- Jservice
- Trivia
- Clues
created: "2026-05-30"
modified: "2026-05-30"
binds:
- namespace: env
keys:
JSERVICE_BASE_URL: JSERVICE_BASE_URL
capability:
consumes:
- type: http
namespace: "jservice-clues"
baseUri: "{{env.JSERVICE_BASE_URL}}"
description: "jService Trivia API — Clues business capability. Self-contained, no shared references. Default baseUri is http://localhost:3000 for self-hosted instances; the historical http://jservice.io endpoint is offline."
resources:
- name: "random"
path: "/api/random"
operations:
- name: "getRandomClues"
method: GET
description: "Get N random clues (default 1, max 100), including parent category."
inputParameters:
- name: "count"
in: query
type: integer
required: false
description: "Number of clues to return (1-100)."
outputRawFormat: json
outputParameters:
- name: result
type: object
value: "$."
- name: "final"
path: "/api/final"
operations:
- name: "getFinalClues"
method: GET
description: "Get N random Final Jeopardy clues (clues with no value)."
inputParameters:
- name: "count"
in: query
type: integer
required: false
description: "Number of clues to return (1-100)."
outputRawFormat: json
outputParameters:
- name: result
type: object
value: "$."
- name: "clues"
path: "/api/clues"
operations:
- name: "listClues"
method: GET
description: "List clues with filters: value, category, min_date, max_date, game_id, offset."
inputParameters:
- name: "value"
in: query
type: integer
required: false
description: "Dollar value of the clue."
- name: "category"
in: query
type: integer
required: false
description: "Category ID."
- name: "min_date"
in: query
type: string
required: false
description: "Earliest airdate."
- name: "max_date"
in: query
type: string
required: false
description: "Latest airdate."
- name: "game_id"
in: query
type: integer
required: false
description: "Jeopardy! game ID."
- name: "offset"
in: query
type: integer
required: false
description: "Pagination offset."
outputRawFormat: json
outputParameters:
- name: result
type: object
value: "$."
exposes:
- type: rest
namespace: "jservice-clues-rest"
port: 8080
description: "REST adapter for jService — Clues. One Spectral-compliant resource per consumed operation, prefixed with /v1."
resources:
- path: "/v1/random-clues"
name: "random-clues"
description: "REST surface for random clue retrieval."
operations:
- method: GET
name: "getRandomClues"
description: "Get N random clues."
call: "jservice-clues.getRandomClues"
with:
"count": "rest.count"
outputParameters:
- type: object
mapping: "$."
- path: "/v1/final-clues"
name: "final-clues"
description: "REST surface for Final Jeopardy clue retrieval."
operations:
- method: GET
name: "getFinalClues"
description: "Get N random Final Jeopardy clues."
call: "jservice-clues.getFinalClues"
with:
"count": "rest.count"
outputParameters:
- type: object
mapping: "$."
- path: "/v1/clues"
name: "clues"
description: "REST surface for filtered clue listing."
operations:
- method: GET
name: "listClues"
description: "List clues with filters."
call: "jservice-clues.listClues"
with:
"value": "rest.value"
"category": "rest.category"
"min_date": "rest.min_date"
"max_date": "rest.max_date"
"game_id": "rest.game_id"
"offset": "rest.offset"
outputParameters:
- type: object
mapping: "$."
- type: mcp
namespace: "jservice-clues-mcp"
port: 9090
transport: http
description: "MCP adapter for jService — Clues. One tool per consumed operation, routed inline through this capability's consumes block."
tools:
- name: "get-random-clues"
description: "Get N random Jeopardy! clues with their categories."
hints:
readOnly: true
destructive: false
idempotent: true
call: "jservice-clues.getRandomClues"
with:
"count": "tools.count"
outputParameters:
- type: object
mapping: "$."
- name: "get-final-clues"
description: "Get N random Final Jeopardy clues."
hints:
readOnly: true
destructive: false
idempotent: true
call: "jservice-clues.getFinalClues"
with:
"count": "tools.count"
outputParameters:
- type: object
mapping: "$."
- name: "list-clues"
description: "List clues filtered by value, category, airdate window, and game ID."
hints:
readOnly: true
destructive: false
idempotent: true
call: "jservice-clues.listClues"
with:
"value": "tools.value"
"category": "tools.category"
"min_date": "tools.min_date"
"max_date": "tools.max_date"
"game_id": "tools.game_id"
"offset": "tools.offset"
outputParameters:
- type: object
mapping: "$."