_ registry / mcp streamable-http · checked 46m ago

quizbase

https://quizbase.runriva.com

Registry code: 23dc32cb18b15966

api record

QuizBase exposes a multilingual trivia catalog (1.2M+ questions, English + Polish at launch) through MCP. Discovery methods (initialize, tools/list, prompts/list, resources/list) are anonymous; execution methods (tools/call, prompts/get, resources/read) require an API key — get one free, no card, at https://quizbase.runriva.com/dashboard/keys.

Start with quizbase_categories or quizbase_topics for orientation, then quizbase_random or quizbase_list with filters (lang, category, difficulty, regions, source, quality). Each question carries per-record attribution (source, author, license) —…

endpoint
https://quizbase.runriva.com/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing
karma
0 · newcomer
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
211ms

last good check

priced tools
0

of 12 tools

_ answered our checks, 90 days 3 checks · signed record
  • unknown → live
_ used through this hub 30 days

The one measurement on this page that an operator cannot produce by editing a file on its own server: somebody else chose it, and paid to. Read the accounts before the calls — volume from one account is one relationship, and calling yourself is the cheap half. Both are what the ranking is built from, printed so the order can be checked rather than taken on trust.

accounts
0

distinct, expensive to fake

calls served
0

successful, last 30 days

_ what it can do 12 tools
12 auth-required 12 of 12 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • quizbase_categories auth-required 5h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for category `name` field (ISO 639-1). Default \"en\". Supported: en, pl. Slugs are language-agnostic."
        }
      }
    }
    arguments 15 lines
  • quizbase_languages auth-required 5h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language 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."
        }
      }
    }
    arguments 15 lines
  • quizbase_question_by_id auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Question UUID (v7 format). Stable across language translations — the same UUID may exist in multiple languages with different text but same canonical answer."
        },
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language 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`."
        }
      }
    }
    arguments 24 lines
  • quizbase_topic_by_slug auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "properties": {
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for `topic.label` and sample question text (ISO 639-1). Default \"en\". Supported: en, pl. Numeric facet counts language-agnostic."
        },
        "slug": {
          "type": "string",
          "minLength": 1,
          "description": "Curated 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`)."
        }
      }
    }
    arguments 23 lines
  • quizbase_report auth-required never probed

    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 on success: {ok:true, reportId}. On failure the result is marked isError:true with structuredContent {error, message} — error codes: invalid_input, not_found, rate_limit_exceeded (per-IP 5/min), internal_error.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "enum": [
            "translation",
            "factual",
            "inappropriate",
            "attribution",
            "other"
          ],
          "type": "string",
          "description": "Report 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)."
        },
        "comment": {
          "type": "string",
          "maxLength": 2000,
          "description": "Free-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\"."
        },
        "questionId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Question UUID (v7) being reported. Highest-fidelity identifier — use when you have it. At least one of `questionId`, `questionText`, `questionUrl` is required."
        },
        "questionUrl": {
          "type": "string",
          "format": "uri",
          "maxLength": 500,
          "description": "URL 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."
        },
        "questionText": {
          "type": "string",
          "maxLength": 2000,
          "minLength": 10,
          "description": "Full or partial question text (10-2000 chars) when UUID is not available. Used by moderators to locate the record. Lower fidelity than `questionId`."
        },
        "reporterEmail": {
          "type": "string",
          "format": "email",
          "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
          "description": "Reporter email for follow-up (optional). Use when you have user consent — we may contact for clarification if the report is unclear."
        }
      }
    }
    arguments 49 lines
  • quizbase_tags auth-required 46m ago

    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).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "q": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Substring search across tag slug + label (case-insensitive). Use to find specific tags by partial name."
        },
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for tag `label` (ISO 639-1). Default \"en\". Supported: en, pl. Slugs are language-agnostic canonical identifiers."
        },
        "limit": {
          "type": "integer",
          "default": 100,
          "maximum": 500,
          "minimum": 1,
          "description": "Page size (1-500, default 100)."
        },
        "cursor": {
          "type": "string",
          "description": "Opaque pagination cursor from previous `meta.nextCursor`. Omit for page 1. Stop when null."
        }
      }
    }
    arguments 32 lines
  • quizbase_topics auth-required 46m ago

    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).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "q": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Substring 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`."
        },
        "kind": {
          "enum": [
            "tag",
            "subcategory"
          ],
          "type": "string",
          "description": "Filter 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."
        },
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for `label` field in each topic (ISO 639-1). Default \"en\". Supported: en, pl. Slugs themselves are language-agnostic (canonical)."
        },
        "limit": {
          "type": "integer",
          "default": 100,
          "maximum": 500,
          "minimum": 1,
          "description": "Page size (1-500, default 100). Higher = fewer round-trips."
        },
        "cursor": {
          "type": "string",
          "description": "Opaque pagination cursor from previous `meta.nextCursor`. Omit for page 1; pass last response's `meta.nextCursor` for next pages. Stop when `nextCursor` is null."
        }
      }
    }
    arguments 40 lines
  • quizbase_list auth-required 5h ago

    Cursor-paginated browse over the catalog. Quality-first: by default excludes questions flagged for review (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), 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 (array): include only these of 12 (opentdb, opentriviaqa, kqa-pro, entityq, mintaka, mkqa, nq-open, creak, qasc, arc, webq, quizbase). - exclude_source (array): drop these sources, e.g. ["entityq"]. Applied after source. - license (SPDX): e.g. CC-BY-SA-4.0, MIT. - quality: 'high' (default) = cleanest, most broadly-useful. 'standard' = broader pool incl. niche/too-specific. 'all' = full pool incl. flagged; when 'all', each question gains a "quality" field ('high' or 'needs_review'). - updated_since (ISO 8601): only questions updated after this — for delta sync caches. BATCH + TRANSLATION MAPPING: - ids (up to 250): fetch those exact records in one call (anti-repeat, deep-links, restoring a saved set). Terminal selector — browse filters and cursor are ignored. Missing ids → meta.missing. - content_language (en|pl): with ids, returns each question's sibling in that CONTENT language across the translation chain — the same questions in another language. Distinct from lang (labels only). PAGINATION + COUNTING: - cursor (string): from previous meta.nextCursor. Omit for page 1. - limit (1-100, default 20). - count: none (default, skip — page via nextCursor) | exact (precise COUNT(*), index-only ~25-90ms). OUTPUT: { questions: [...], meta: { count, countMode, language, nextCursor, total? } }. 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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "maxItems": 250,
          "description": "Batch fetch by id (up to 250). Returns those exact records in one call — anti-repeat, deep-links, reconstructing a saved set. Terminal selector: all browse filters and cursor are ignored. Ids with no result come back in `meta.missing`. Combine with `content_language` to map a set across languages."
        },
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Question language as ISO 639-1 code. Default \"en\". Supported: en, pl. Translated rows share the same `id` across languages."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AND-logic: question must have ALL these tag slugs (kebab-case)"
        },
        "type": {
          "enum": [
            "multiple",
            "boolean"
          ],
          "type": "string",
          "description": "\"multiple\" = 1 correct + 3 distractors. \"boolean\" = True/False."
        },
        "count": {
          "enum": [
            "exact",
            "none"
          ],
          "type": "string",
          "default": "none",
          "description": "Total count strategy. `none` (default, fastest — page via nextCursor, no total). `exact` (precise COUNT(*), index-only ~25-90ms — when you need the exact number of matches)."
        },
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 100,
          "minimum": 1,
          "description": "Page size (1-100, default 20). Larger pages reduce round-trips but increase latency."
        },
        "topic": {
          "type": "string",
          "description": "Curated topic slug — alias resolver matches subcategories and tags"
        },
        "cursor": {
          "type": "string",
          "description": "Opaque pagination cursor from previous `meta.nextCursor`. Omit for page 1; pass last response's `meta.nextCursor` for subsequent pages. Stop when `nextCursor` is null."
        },
        "source": {
          "type": "array",
          "items": {
            "enum": [
              "arc",
              "creak",
              "entityq",
              "kqa-pro",
              "mintaka",
              "mkqa",
              "nq-open",
              "opentdb",
              "opentriviaqa",
              "qasc",
              "quizbase",
              "webq"
            ],
            "type": "string"
          },
          "description": "Include only these source databases (one or more of 12): opentdb, opentriviaqa, mkqa, mintaka, kqa-pro, entityq, nq-open, creak, qasc, arc, webq, quizbase. Matches `attribution.source`."
        },
        "license": {
          "enum": [
            "CC-BY-SA-4.0",
            "CC-BY-SA-3.0",
            "CC-BY-4.0",
            "MIT",
            "proprietary"
          ],
          "type": "string",
          "description": "SPDX license string (e.g. CC-BY-SA-4.0, MIT). Filter for redistribution-friendly content."
        },
        "quality": {
          "enum": [
            "high",
            "standard",
            "all"
          ],
          "type": "string",
          "default": "high",
          "description": "Quality preset. \"high\" (default) returns only the cleanest, most broadly-useful questions. \"standard\" broadens to the full reviewed pool incl. niche/too-specific. \"all\" includes everything flagged for review — for audit, research, or BY-SA dump."
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cultural 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."
        },
        "category": {
          "type": "string",
          "description": "Top-level category slug (kebab-case) — e.g. `geography`, `history`, `science-and-nature`. 24 total. Use `quizbase_categories` for canonical list with localized names."
        },
        "tags_any": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OR-logic: question must have AT LEAST ONE of these tag slugs"
        },
        "difficulty": {
          "enum": [
            "trivial",
            "easy",
            "medium",
            "hard",
            "expert"
          ],
          "type": "string",
          "description": "LLM-calibrated 5-level difficulty. trivial=common-knowledge, easy=approachable, medium=requires-thought, hard=needs-domain-context, expert=specialist. Records not yet LLM-rated hold the importer placeholder (mostly \"medium\" for factoid sources)."
        },
        "topics_any": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OR-logic over curated topic slugs (resolves aliases)"
        },
        "subcategory": {
          "type": "string",
          "description": "Raw subcategory slug (kebab-case). Prefer `topic` for OR + alias resolver."
        },
        "updated_since": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
          "description": "ISO 8601 timestamp — return only questions updated after this (delta sync)"
        },
        "exclude_source": {
          "type": "array",
          "items": {
            "enum": [
              "arc",
              "creak",
              "entityq",
              "kqa-pro",
              "mintaka",
              "mkqa",
              "nq-open",
              "opentdb",
              "opentriviaqa",
              "qasc",
              "quizbase",
              "webq"
            ],
            "type": "string"
          },
          "description": "Exclude these source databases, e.g. `[\"entityq\"]`. Use to drop noisy auto-generated sources. Applied after `source` if both are present."
        },
        "content_language": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "description": "With `ids`, returns each question in this CONTENT language (its `text`/answers) by following the translation chain — the same questions in another language, not a re-draw. Distinct from `lang` (which only localizes category/tag labels). Supported: en, pl. Untranslated ids land in `meta.missing`."
        }
      }
    }
    arguments 181 lines
  • quizbase_subcategories auth-required 46m ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "q": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Substring search across subcategory slug + label (case-insensitive). Useful for partial discovery."
        },
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for subcategory `label` (ISO 639-1). Default \"en\". Supported: en, pl. Slugs language-agnostic."
        },
        "limit": {
          "type": "integer",
          "default": 100,
          "maximum": 500,
          "minimum": 1,
          "description": "Page size (1-500, default 100)."
        },
        "cursor": {
          "type": "string",
          "description": "Opaque pagination cursor from previous `meta.nextCursor`. Omit for page 1."
        }
      }
    }
    arguments 32 lines
  • quizbase_regions auth-required 2h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "q": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Substring search on region code + label (case-insensitive). E.g. `q=jew` returns `jewish` cultural code."
        },
        "kind": {
          "enum": [
            "country",
            "cultural"
          ],
          "type": "string",
          "description": "Filter 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."
        },
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for region `label` (ISO 639-1). Default \"en\". Supported: en, pl. Codes themselves language-agnostic."
        },
        "limit": {
          "type": "integer",
          "default": 100,
          "maximum": 500,
          "minimum": 1,
          "description": "Page size (1-500, default 100). Catalog has ~150 distinct codes per language."
        },
        "cursor": {
          "type": "string",
          "description": "Opaque pagination cursor from previous `meta.nextCursor`. Omit for page 1."
        }
      }
    }
    arguments 40 lines
  • quizbase_random auth-required 2h ago

    Fetch N random trivia questions matching filters. Quality-first: by default excludes questions flagged for review (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. Records not yet LLM-rated hold the 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 (array): include only these source databases (one or more of 12: opentdb, opentriviaqa, kqa-pro, entityq, mintaka, mkqa, nq-open, creak, qasc, arc, webq, quizbase). - exclude_source (array): drop these sources, e.g. ["entityq"] for human-curated only. Applied after source. - 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) = cleanest, most broadly-useful. 'standard' = broader pool incl. niche/too-specific (more volume). 'all' = audit/research, includes flagged — when 'all', each question gains a "quality" field ('high' or 'needs_review'). - 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).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Question 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`)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AND-logic: question must have ALL these tag slugs (kebab-case)"
        },
        "type": {
          "enum": [
            "multiple",
            "boolean"
          ],
          "type": "string",
          "description": "\"multiple\" = 1 correct + 3 distractors. \"boolean\" = True/False (Prawda/Fałsz in pl)."
        },
        "topic": {
          "type": "string",
          "description": "Curated topic slug — alias resolver matches subcategories and tags"
        },
        "amount": {
          "type": "integer",
          "default": 10,
          "maximum": 50,
          "minimum": 1,
          "description": "Number 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."
        },
        "source": {
          "type": "array",
          "items": {
            "enum": [
              "arc",
              "creak",
              "entityq",
              "kqa-pro",
              "mintaka",
              "mkqa",
              "nq-open",
              "opentdb",
              "opentriviaqa",
              "qasc",
              "quizbase",
              "webq"
            ],
            "type": "string"
          },
          "description": "Include only these source databases (one or more of 12: opentdb, opentriviaqa, mkqa, mintaka, kqa-pro, entityq, nq-open, creak, qasc, arc, webq, quizbase). Matches `attribution.source` per question."
        },
        "exclude": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "maxItems": 250,
          "description": "List 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."
        },
        "license": {
          "enum": [
            "CC-BY-SA-4.0",
            "CC-BY-SA-3.0",
            "CC-BY-4.0",
            "MIT",
            "proprietary"
          ],
          "type": "string",
          "description": "SPDX 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`."
        },
        "quality": {
          "enum": [
            "high",
            "standard",
            "all"
          ],
          "type": "string",
          "default": "high",
          "description": "Quality preset. \"high\" (default) returns only the cleanest, most broadly-useful questions. \"standard\" broadens to the full reviewed pool incl. niche/too-specific (more volume). \"all\" includes everything flagged for review too — for audit, research, or BY-SA dump consumption."
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cultural 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."
        },
        "category": {
          "type": "string",
          "description": "Top-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_any": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OR-logic: question must have AT LEAST ONE of these tag slugs"
        },
        "difficulty": {
          "enum": [
            "trivial",
            "easy",
            "medium",
            "hard",
            "expert"
          ],
          "type": "string",
          "description": "LLM-calibrated 5-level difficulty. trivial=common-knowledge, easy=approachable, medium=requires-thought, hard=needs-domain-context, expert=specialist. Records not yet LLM-rated hold the importer placeholder (mostly \"medium\" for factoid sources)."
        },
        "topics_any": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OR-logic over curated topic slugs (resolves aliases)"
        },
        "subcategory": {
          "type": "string",
          "description": "Raw subcategory slug (kebab-case). Prefer `topic` for OR semantics + alias resolver."
        },
        "exclude_source": {
          "type": "array",
          "items": {
            "enum": [
              "arc",
              "creak",
              "entityq",
              "kqa-pro",
              "mintaka",
              "mkqa",
              "nq-open",
              "opentdb",
              "opentriviaqa",
              "qasc",
              "quizbase",
              "webq"
            ],
            "type": "string"
          },
          "description": "Exclude these source databases. Use to drop noisy auto-generated sources, e.g. `[\"entityq\"]` for human-curated only. Applied after `source` if both are present."
        }
      }
    }
    arguments 154 lines
  • quizbase_stats auth-required 2h ago

    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. - byDifficulty: { trivial: N, easy: N, medium: N, hard: N, expert: N, unrated: N } — null difficulty mapped to 'unrated'. trivial/expert populated by LLM calibration. - 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).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "lang": {
          "enum": [
            "en",
            "pl"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for localized labels in `byCategory[].name`, `byTopic[].label`, `byTag[].label`. Default \"en\". Supported: en, pl. Numeric counts (total, byLanguage, bySource, byDifficulty) are language-agnostic."
        }
      }
    }
    arguments 15 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/23dc32cb18b15966/badge.svg)](https://brick.blue/agent/23dc32cb18b15966)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Own the domain? Prove it and the listing carries a verified badge here too: passport.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.