Open Trivia DB · Capability

Open Trivia DB API

Free JSON API providing trivia questions across multiple categories, difficulties, and types. No API key is required. Supports session tokens to avoid duplicate questions across requests, multiple response encodings, and rate limiting of one request per IP every 5 seconds.

Run with Naftiko OpenTriviaDbAPI

What You Can Do

GET
Getquestions — Retrieve trivia questions
/api.php
GET
Getcategories — List trivia categories
/api_category.php
GET
Getcategorycount — Question count for category
/api_count.php
GET
Getglobalcount — Global question counts
/api_count_global.php
GET
Managetoken — Manage session tokens
/api_token.php

MCP Tools

getquestions

Retrieve trivia questions

read-only idempotent
getcategories

List trivia categories

read-only idempotent
getcategorycount

Question count for category

read-only idempotent
getglobalcount

Global question counts

read-only idempotent
managetoken

Manage session tokens

read-only idempotent

Capability Spec

open-trivia-db-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Open Trivia DB API
  description: Free JSON API providing trivia questions across multiple categories, difficulties, and types. No API key is
    required. Supports session tokens to avoid duplicate questions across requests, multiple response encodings, and rate
    limiting of one request per IP every 5 seconds.
  tags:
  - Open
  - Trivia
  - Db
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: open-trivia-db
    baseUri: https://opentdb.com
    description: Open Trivia DB API HTTP API.
    resources:
    - name: api-php
      path: /api.php
      operations:
      - name: getquestions
        method: GET
        description: Retrieve trivia questions
        inputParameters:
        - name: amount
          in: query
          type: integer
          required: true
          description: Number of questions to return (1-50).
        - name: category
          in: query
          type: integer
          description: Category ID to filter by. Omit for any category.
        - name: difficulty
          in: query
          type: string
          description: Question difficulty.
        - name: type
          in: query
          type: string
          description: Question type.
        - name: encode
          in: query
          type: string
          description: Response encoding format.
        - name: token
          in: query
          type: string
          description: Session token to avoid duplicate questions.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-category-php
      path: /api_category.php
      operations:
      - name: getcategories
        method: GET
        description: List trivia categories
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-count-php
      path: /api_count.php
      operations:
      - name: getcategorycount
        method: GET
        description: Question count for category
        inputParameters:
        - name: category
          in: query
          type: integer
          required: true
          description: Category ID.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-count-global-php
      path: /api_count_global.php
      operations:
      - name: getglobalcount
        method: GET
        description: Global question counts
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-token-php
      path: /api_token.php
      operations:
      - name: managetoken
        method: GET
        description: Manage session tokens
        inputParameters:
        - name: command
          in: query
          type: string
          required: true
          description: Token operation.
        - name: token
          in: query
          type: string
          description: Existing token (required when command is reset).
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: open-trivia-db-rest
    description: REST adapter for Open Trivia DB API.
    resources:
    - path: /api.php
      name: getquestions
      operations:
      - method: GET
        name: getquestions
        description: Retrieve trivia questions
        call: open-trivia-db.getquestions
        outputParameters:
        - type: object
          mapping: $.
    - path: /api_category.php
      name: getcategories
      operations:
      - method: GET
        name: getcategories
        description: List trivia categories
        call: open-trivia-db.getcategories
        outputParameters:
        - type: object
          mapping: $.
    - path: /api_count.php
      name: getcategorycount
      operations:
      - method: GET
        name: getcategorycount
        description: Question count for category
        call: open-trivia-db.getcategorycount
        outputParameters:
        - type: object
          mapping: $.
    - path: /api_count_global.php
      name: getglobalcount
      operations:
      - method: GET
        name: getglobalcount
        description: Global question counts
        call: open-trivia-db.getglobalcount
        outputParameters:
        - type: object
          mapping: $.
    - path: /api_token.php
      name: managetoken
      operations:
      - method: GET
        name: managetoken
        description: Manage session tokens
        call: open-trivia-db.managetoken
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: open-trivia-db-mcp
    transport: http
    description: MCP adapter for Open Trivia DB API for AI agent use.
    tools:
    - name: getquestions
      description: Retrieve trivia questions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: open-trivia-db.getquestions
      with:
        amount: tools.amount
        category: tools.category
        difficulty: tools.difficulty
        type: tools.type
        encode: tools.encode
        token: tools.token
      inputParameters:
      - name: amount
        type: integer
        description: Number of questions to return (1-50).
        required: true
      - name: category
        type: integer
        description: Category ID to filter by. Omit for any category.
      - name: difficulty
        type: string
        description: Question difficulty.
      - name: type
        type: string
        description: Question type.
      - name: encode
        type: string
        description: Response encoding format.
      - name: token
        type: string
        description: Session token to avoid duplicate questions.
      outputParameters:
      - type: object
        mapping: $.
    - name: getcategories
      description: List trivia categories
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: open-trivia-db.getcategories
      outputParameters:
      - type: object
        mapping: $.
    - name: getcategorycount
      description: Question count for category
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: open-trivia-db.getcategorycount
      with:
        category: tools.category
      inputParameters:
      - name: category
        type: integer
        description: Category ID.
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getglobalcount
      description: Global question counts
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: open-trivia-db.getglobalcount
      outputParameters:
      - type: object
        mapping: $.
    - name: managetoken
      description: Manage session tokens
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: open-trivia-db.managetoken
      with:
        command: tools.command
        token: tools.token
      inputParameters:
      - name: command
        type: string
        description: Token operation.
        required: true
      - name: token
        type: string
        description: Existing token (required when command is reset).
      outputParameters:
      - type: object
        mapping: $.