Skip to main content
Glama

QuizBase

Server Details

MCP server for trivia: 1.4M+ questions (EN+PL), 24 categories, 12 tools + 4 prompts, OAuth 2.1.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.

Tool Definition Quality

Score is being calculated. Check back soon.

Available Tools

12 tools
quizbase_categoriesList all top-level categories
Read-onlyIdempotent
Inspect

List of 24 top-level categories with i18n labels. USE WHEN: building a category picker, validating ?category= input. Stable enum (rarely changes). For higher-resolution browsing → quizbase_subcategories or quizbase_topics.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for category `name` field (ISO 639-1). Default "en". Supported: en, pl. Slugs are language-agnostic.en

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesResponse metadata: how many categories returned and which language.
categoriesYesAll 24 top-level categories with localized names.
quizbase_languagesList supported languages with counts
Read-onlyIdempotent
Inspect

Returns supported language whitelist (ISO 639-1) with question counts per language. USE WHEN: showing language picker, validating ?lang= input, deciding fallback. Day 1: en + pl.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for `displayName` of each supported language entry (ISO 639-1). Default "en". E.g. with `lang=pl` Polish returns as "polski", English as "angielski". Codes themselves are language-agnostic.en

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesResponse metadata.
languagesYesSupported languages with localized display name and question count per language.
quizbase_listBrowse questions catalog with cursor pagination
Read-onlyIdempotent
Inspect

Cursor-paginated browse over the catalog. Quality-first: by default excludes needs_review=true (use quality='all' for full pool).

USE WHEN: full catalog sync, delta sync (updated_since), exhaustive enumeration by filter. NOT WHEN: you only need N random samples (use quizbase_random) or a single record (use quizbase_question_by_id).

PAGINATION: stable cursor over id UUIDv7 DESC. First call: omit cursor. Next: pass meta.nextCursor. Stop when nextCursor is null.

KEY FILTERS (full parity with REST):

  • lang: ISO 639-1, default "en". Supported: en, pl.

  • category (slug), difficulty (trivial|easy|medium|hard|expert — LLM-calibrated Plan 121), type (multiple|boolean), subcategory (raw slug).

  • tags (AND), tags_any (OR, max 10): raw tag slugs.

  • topic (curated, alias resolver), topics_any (OR over curated): higher precision than tags.

  • regions (cultural affinity, AND): empty = no cultural advantage assumed. Lowercase ISO 3166-1 alpha-2 ('us', 'pl', 'gb') + cultural codes ('jewish', 'christian-catholic', 'islam'). Filter for content statistically more likely known by residents/members. Discover via quizbase_regions.

  • source: one of 12 (opentdb, opentriviaqa, kqa-pro, entityq, mintaka, mkqa, nq-open, creak, qasc, arc, webq, quizbase).

  • license (SPDX): e.g. CC-BY-SA-4.0, MIT.

  • quality: 'high' (default) excludes needs_review=true; 'all' for full approved pool. When 'all', each question gains a "quality" field with value 'high' or 'needs_review'.

  • updated_since (ISO 8601): only questions updated after this — for delta sync caches.

PAGINATION + COUNTING:

  • cursor (string): from previous meta.nextCursor. Omit for page 1.

  • limit (1-100, default 20).

  • count: estimate (default, EXPLAIN-based ~5-20ms, ±5-50%) | none (skip).

OUTPUT: { questions: [...], meta: { count, countMode, language, nextCursor, totalEstimate? } }. Each question carries full per-record attribution (source, author, license, licenseVersion, licenseUrl, sourceId, url, modifications, lastModified) — identical shape to REST /api/v1/questions.

ATTRIBUTION REQUIRED if you redistribute. Credit each question using its own attribution object — see license + licenseUrl + modifications fields per record.

COMMON MISTAKES: not passing the cursor on subsequent calls (you'll re-read page 1); polling without updated_since when doing delta sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoQuestion language as ISO 639-1 code. Default "en". Supported: en, pl. Translated rows share the same `id` across languages.en
tagsNoAND-logic: question must have ALL these tag slugs (kebab-case)
typeNo"multiple" = 1 correct + 3 distractors. "boolean" = True/False.
countNoTotal count strategy. `estimate` (default, EXPLAIN-based ~5-20ms — recommended for paginated UIs, ±5-50% accuracy). `none` (skip COUNT, fastest — when you walk cursor anyway).estimate
limitNoPage size (1-100, default 20). Larger pages reduce round-trips but increase latency.
topicNoCurated topic slug — alias resolver matches subcategories and tags
cursorNoOpaque pagination cursor from previous `meta.nextCursor`. Omit for page 1; pass last response's `meta.nextCursor` for subsequent pages. Stop when `nextCursor` is null.
sourceNoOne of 12 source databases (matches `attribution.source`): opentdb, opentriviaqa, mkqa, mintaka, kqa-pro, entityq, nq-open, creak, qasc, arc, webq, quizbase. Use to exclude noisy auto-generated sources.
licenseNoSPDX license string (e.g. CC-BY-SA-4.0, MIT). Filter for redistribution-friendly content.
qualityNoQuality preset. "high" (default) excludes questions flagged for review (low-quality distractors, trivial patterns). "all" includes the full approved pool — for audit, research, or BY-SA dump.high
regionsNoCultural affinity codes. A question is tagged with a region if residents of that country, or members of that cultural/religious group, are **statistically more likely to know** the answer (NOT geography of the subject). Lowercase ISO 3166-1 alpha-2 (`us`, `pl`, `gb`) plus cultural codes (`jewish`, `christian-catholic`, `islam`). AND-logic. Empty array in DB = universally accessible. Use `quizbase_regions` for the full catalog with counts.
categoryNoTop-level category slug (kebab-case) — e.g. `geography`, `history`, `science-and-nature`. 24 total. Use `quizbase_categories` for canonical list with localized names.
tags_anyNoOR-logic: question must have AT LEAST ONE of these tag slugs
difficultyNoLLM-calibrated 5-level difficulty (Plan 121, from Pipeline I). trivial=common-knowledge, easy=approachable, medium=requires-thought, hard=needs-domain-context, expert=specialist. Pre-rescore records hold importer placeholder (mostly "medium" for factoid sources).
topics_anyNoOR-logic over curated topic slugs (resolves aliases)
subcategoryNoRaw subcategory slug (kebab-case). Prefer `topic` for OR + alias resolver.
updated_sinceNoISO 8601 timestamp — return only questions updated after this (delta sync)

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesPagination metadata: count of returned rows, total/totalEstimate (depends on countMode), nextCursor (null = end), language echoed.
questionsYesArray of trivia questions for the current page, each with full attribution.
quizbase_question_by_idGet a single question by UUID
Read-onlyIdempotent
Inspect

Fetch one question with FULL per-record attribution (source, author, license, modifications, lastModified, sourceId, url) and quality: "high" | "needs_review" (always present — deep-link semantic means full row). USE WHEN: deep link to a question, full provenance lookup for redistribution, cache refresh, moderation inspection. INPUTS: id (UUID), lang (affects category.name and label translations only). 404 returned via {question: null, error: "not_found"} — id may be invalid, pending/rejected, canonical-duplicate, or tombstoned.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesQuestion UUID (v7 format). Stable across language translations — the same UUID may exist in multiple languages with different text but same canonical answer.
langNoLanguage for the response (ISO 639-1). Default "en". Supported: en, pl. Affects `text`, `correct`, `incorrect`, plus localized labels in `category.name`, `subcategories[].label`, `tags[].label`.en

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError code when question is null (e.g. `not_found`).
questionYesQuestion object with full attribution and quality flag. Null when not found.
quizbase_randomGet random trivia questions
Read-only
Inspect

Fetch N random trivia questions matching filters. Quality-first: by default excludes needs_review=true (use quality='all' to include for audit/research).

USE WHEN: building a quiz, sampling content for warmup, generating practice sets. NOT WHEN: you need a specific question ID (use quizbase_question_by_id) or want to explore a topic deeply with facets (use quizbase_topic_by_slug).

KEY FILTERS:

  • amount: 1-50, default 10.

  • lang: ISO 639-1. Default "en". Supported: en, pl. Strict — unknown language returns 400.

  • category (slug): e.g. geography, history, science-and-nature. Full list via quizbase_categories.

  • difficulty: trivial | easy | medium | hard | expert. LLM-calibrated (Plan 121 Pipeline I, post-rescore). Pre-rescore records hold importer placeholder (mostly "medium" for factoid sources).

  • type: multiple | boolean (default both; no text_input in random).

  • regions (cultural affinity, AND): empty in data = no cultural advantage assumed. Lowercase ISO 3166-1 alpha-2 ('us', 'pl', 'gb') + cultural codes ('jewish', 'christian-catholic', 'islam'). Filter for content statistically more likely known by residents/members. Discover via quizbase_regions.

  • source: filter by source database (one of 12: opentdb, opentriviaqa, kqa-pro, entityq, mintaka, mkqa, nq-open, creak, qasc, arc, webq, quizbase). Use to exclude noisy auto-generated sources.

  • license (SPDX): CC-BY-SA-4.0 | CC-BY-SA-3.0 | MIT | etc. Restrict to redistribution-friendly content.

  • topic (curated slug): higher precision than tags. Alias resolver matches subcategories+tags. List via quizbase_topics.

  • topics_any: OR over curated topics, max 10.

  • tags (AND), tags_any (OR), subcategory: raw taxonomy. Use topic if available.

  • quality: 'high' (default, recommended) excludes needs_review=true. Use 'all' only for audit/research — when 'all', each question gains a "quality" field with value 'high' or 'needs_review' so you can tell which records were flagged.

  • exclude (UUIDs, max 250): de-dupe within a quiz session.

OUTPUT: { questions: [...], meta: { count, language } }. Each question carries full per-record attribution (source, author, license, licenseVersion, licenseUrl, sourceId, url, modifications, lastModified) — identical shape to REST /api/v1/questions/random.

ATTRIBUTION REQUIRED if you redistribute. CC-BY-SA modifications must be credited per § 3(a)(1)(B) using each question's own attribution object.

COMMON MISTAKES: forcing lang='pl' for a global audience (use 'en' default); skipping quality (default already excludes flagged content — only pass quality='all' for audit); using tags when a curated topic exists (worse precision).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoQuestion language as ISO 639-1 code. Default "en". Supported: en, pl. Strict — unknown language returns 400. The same `id` may exist in multiple languages (translated rows share `id`).en
tagsNoAND-logic: question must have ALL these tag slugs (kebab-case)
typeNo"multiple" = 1 correct + 3 distractors. "boolean" = True/False (Prawda/Fałsz in pl).
topicNoCurated topic slug — alias resolver matches subcategories and tags
amountNoNumber of random questions to return. Range 1-50, default 10. Each call samples independently — pass `exclude` with previously-seen UUIDs to avoid duplicates across calls within one session.
sourceNoOne of 12 source databases (matches `attribution.source` per question): opentdb, opentriviaqa, mkqa, mintaka, kqa-pro, entityq, nq-open, creak, qasc, arc, webq, quizbase. Use to exclude noisy auto-generated sources (e.g. drop `entityq` for human-curated only).
excludeNoList of question UUIDs to exclude from random sampling. Use to de-dupe within a quiz session — pass IDs you already showed the user so they are not repeated. Max 250 IDs per call.
licenseNoSPDX license string (e.g. CC-BY-SA-4.0, CC-BY-SA-3.0, MIT). Filter for redistribution-friendly content. Each question carries its own `attribution.license`.
qualityNoQuality preset. "high" (default) excludes questions flagged for review (low-quality distractors, trivial answer-in-question patterns, manual moderation). "all" includes the full approved pool — for audit, research, or BY-SA dump consumption.high
regionsNoCultural affinity codes. A question is tagged with a region if residents of that country, or members of that cultural/religious group, are **statistically more likely to know** the answer (NOT geography of the subject). Lowercase ISO 3166-1 alpha-2 (`us`, `pl`, `gb`) plus cultural codes (`jewish`, `christian-catholic`, `islam`). AND-logic. Empty array in DB = universally accessible (no cultural advantage assumed). Use `quizbase_regions` for the full catalog with counts.
categoryNoTop-level category slug (kebab-case) — e.g. `geography`, `history`, `science-and-nature`. 24 categories total. Use `quizbase_categories` for the full canonical list with localized names.
tags_anyNoOR-logic: question must have AT LEAST ONE of these tag slugs
difficultyNoLLM-calibrated 5-level difficulty (Plan 121, from Pipeline I). trivial=common-knowledge, easy=approachable, medium=requires-thought, hard=needs-domain-context, expert=specialist. Pre-rescore records hold importer placeholder (mostly "medium" for factoid sources).
topics_anyNoOR-logic over curated topic slugs (resolves aliases)
subcategoryNoRaw subcategory slug (kebab-case). Prefer `topic` for OR semantics + alias resolver.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesResponse metadata: how many questions returned and which language.
questionsYesArray of trivia questions, each carries full per-record attribution.
quizbase_regionsList region codes (cultural affinity) with counts
Read-onlyIdempotent
Inspect

Discover region codes used by the catalog. Cultural affinity — a question is tagged with a region if residents of that country, or members of that cultural/religious group, are statistically more likely to know the answer (NOT geography of the subject). USE WHEN: planning a quiz targeting users from a specific country or cultural background, exploring "what regions are represented". OUTPUT: array of {code, kind, label, count} sorted by count DESC. INPUTS: lang (en|pl), q (substring on code/label), kind (country|cultural), cursor, limit (max 500). Pair with quizbase_random or quizbase_list using regions:[...] to fetch matching questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSubstring search on region code + label (case-insensitive). E.g. `q=jew` returns `jewish` cultural code.
kindNoFilter by region type. `country` returns ISO 3166-1 alpha-2 codes (`us`, `pl`, `gb`...). `cultural` returns cultural/religious affinity codes (`jewish`, `christian-catholic`, `islam`...). Omit for both.
langNoLanguage for region `label` (ISO 639-1). Default "en". Supported: en, pl. Codes themselves language-agnostic.en
limitNoPage size (1-500, default 100). Catalog has ~150 distinct codes per language.
cursorNoOpaque pagination cursor from previous `meta.nextCursor`. Omit for page 1.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesPagination metadata: count returned, total available, cursor for next page.
regionsYesRegion codes (cultural affinity) with localized labels, kind (country|cultural), and per-region counts.
quizbase_reportSubmit a content correction or copyright reportInspect

Submit a content correction, copyright concern, or factual error report. USE WHEN: user (via your interface) flags a wrong answer, broken translation, attribution issue, or DMCA concern. INPUTS: at least one of (questionId UUID, questionText, questionUrl), type (translation|factual|inappropriate|attribution|other), comment (optional, max 2000), reporterEmail (optional). OUTPUT: 202 with reportId. Per-IP rate limit 5/min — overflow returns {ok:false, error:"rate_limit"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesReport category. `translation` = bad EN→PL or other lang translation. `factual` = incorrect answer / outdated fact. `inappropriate` = offensive content. `attribution` = missing/wrong source credit (CC-BY-SA § 3 violation). `other` = anything else (use `comment` to explain).
commentNoFree-text explanation of the issue (max 2000 chars). Strongly recommended — bare flag without context is hard to triage. Examples: "Currency in answer was correct in 2018 but Argentina changed it in 2023", "Polish translation reads as gibberish".
questionIdNoQuestion UUID (v7) being reported. Highest-fidelity identifier — use when you have it. At least one of `questionId`, `questionText`, `questionUrl` is required.
questionUrlNoURL referencing the question (e.g. your app deep-link, screenshot host). Useful when question came from a downstream surface and the user clicks "Report" without raw text/ID access.
questionTextNoFull or partial question text (10-2000 chars) when UUID is not available. Used by moderators to locate the record. Lower fidelity than `questionId`.
reporterEmailNoReporter email for follow-up (optional). Use when you have user consent — we may contact for clarification if the report is unclear.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the report was accepted (true) or rejected (false).
errorNoError code when `ok=false` (e.g. `rate_limit`, `question_not_found`).
reportIdNoUUID of the recorded report when `ok=true`. Use for follow-up references.
quizbase_statsGet public catalog statistics
Read-onlyIdempotent
Inspect

Public catalog counters with live breakdowns by language, source, category, difficulty, topic, tag.

USE WHEN: showing catalog overview, picking a category programmatically, building landing copy, deciding "do we have enough X-content for this quiz".

OUTPUT FIELDS:

  • total: approved questions in 'en' + 'pl'.

  • byLanguage: { en: N, pl: N }.

  • bySource: { entityq: N, mintaka: N, 'kqa-pro': N, ... } — 12 keys, one per source database (Plan 113 S5 made this live data).

  • byDifficulty: { trivial: N, easy: N, medium: N, hard: N, expert: N, unrated: N } — null difficulty mapped to 'unrated'. trivial/expert populated by LLM rescore (Plan 121).

  • byCategory: top 24 with localized names.

  • byTopic / byTag: top 30 curated topics + top 30 tags with localized labels.

  • meta: { generatedAt: ISO 8601, language }.

INPUTS: lang (default "en") affects byCategory[].name and byTopic[].label / byTag[].label.

DATA FRESHNESS: snapshot regenerated daily (~03:00 UTC) + on demand after batch imports. generatedAt shows when. Counts stable ±0.01% between snapshots.

COMMON MISTAKES: polling stats every request (cache it on your side; 5-min Redis TTL on ours); treating bySource keys as stable enum (use quizbase_languages / quizbase_categories for canonical input enums).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for localized labels in `byCategory[].name`, `byTopic[].label`, `byTag[].label`. Default "en". Supported: en, pl. Numeric counts (total, byLanguage, bySource, byDifficulty) are language-agnostic.en

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesSnapshot metadata: generation timestamp and echoed language.
byTagYesTop 30 raw tags with localized labels.
totalYesApproved questions count across all supported languages.
byTopicYesTop 30 curated topics with localized labels.
bySourceYesCount per source database (12 keys).
byCategoryYesTop 24 categories with localized names and counts.
byLanguageYesCount per language code.
byDifficultyYesCount per difficulty bucket (trivial / easy / medium / hard / expert / unrated).
quizbase_subcategoriesList raw subcategories with counts
Read-onlyIdempotent
Inspect

Raw subcategory dump (LLM-organic kebab-case, Plan 55 middle taxonomy layer) with display label and count. USE WHEN: navigating between top-level category and individual tags, exploring topic structure. Filter questions via quizbase_random?subcategory=. INPUTS: q, cursor, limit (max 500).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSubstring search across subcategory slug + label (case-insensitive). Useful for partial discovery.
langNoLanguage for subcategory `label` (ISO 639-1). Default "en". Supported: en, pl. Slugs language-agnostic.en
limitNoPage size (1-500, default 100).
cursorNoOpaque pagination cursor from previous `meta.nextCursor`. Omit for page 1.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesPagination metadata: count returned, total available, cursor for next page.
subcategoriesYesSubcategories on this page with localized labels and per-subcategory counts.
quizbase_tagsList raw tags with counts
Read-onlyIdempotent
Inspect

Raw tag dump (10k+ entries) with display label and question count. USE WHEN: building a tag picker, searching "is X a tag", running analytics. Curated higher-level groupings → quizbase_topics. INPUTS: q (substring), cursor, limit (max 500).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSubstring search across tag slug + label (case-insensitive). Use to find specific tags by partial name.
langNoLanguage for tag `label` (ISO 639-1). Default "en". Supported: en, pl. Slugs are language-agnostic canonical identifiers.en
limitNoPage size (1-500, default 100).
cursorNoOpaque pagination cursor from previous `meta.nextCursor`. Omit for page 1. Stop when null.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesPagination metadata: count returned, total available, cursor for next page.
tagsYesTags on this page with display labels and per-tag question counts.
quizbase_topic_by_slugGet curated topic detail with facets
Read-onlyIdempotent
Inspect

Fetch one curated topic with facets (byCategory, byDifficulty, byLanguage, coOccurringTags, coOccurringSubcategories) and 3 sample questions. USE WHEN: zooming into a topic, deciding multi-round quiz structure. Returns {topic: null, error: "not_found"} when slug is unknown.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for `topic.label` and sample question text (ISO 639-1). Default "en". Supported: en, pl. Numeric facet counts language-agnostic.en
slugYesCurated topic slug (kebab-case) — e.g. `star-wars`, `world-war-ii`, `programming-languages`. List all via `quizbase_topics`. Aliases resolve automatically (e.g. `sw` → `star-wars`).

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaNoResponse metadata.
errorNoError code when topic is null (e.g. `not_found`).
topicYesTopic detail with metadata. Null if slug not found.
facetsNoFacet breakdowns: byCategory, byDifficulty, byLanguage, coOccurringTags, coOccurringSubcategories.
samplesNoUp to 3 sample questions matching this topic.
quizbase_topicsList curated topics with aliases
Read-onlyIdempotent
Inspect

Discover curated topics (2,184 entries with aliases). USE WHEN: planning a multi-round quiz, exploring "what is available about X", showing topic browser. Sorted by count DESC, slug ASC. Cursor-paginated. INPUTS: q (substring on label/alias), kind (tag|subcategory), cursor, limit (max 500).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSubstring search across topic label, slug, and aliases (case-insensitive). Use to find a curated topic by partial name — e.g. `q=star` returns `star-wars`, `star-trek`, `stars-and-astronomy`.
kindNoFilter by underlying taxonomy origin. `tag` returns topics resolving to tag-level slugs (proper nouns, specific entities). `subcategory` returns topics resolving to broader subcategory groupings. Omit for all.
langNoLanguage for `label` field in each topic (ISO 639-1). Default "en". Supported: en, pl. Slugs themselves are language-agnostic (canonical).en
limitNoPage size (1-500, default 100). Higher = fewer round-trips.
cursorNoOpaque pagination cursor from previous `meta.nextCursor`. Omit for page 1; pass last response's `meta.nextCursor` for next pages. Stop when `nextCursor` is null.

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYesPagination metadata: count returned, total available, cursor for next page.
topicsYesTopics on this page with localized labels, counts, and underlying kind.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources