QuizBase
Qué hace este MCP
Searches, filters, samples, and manages a large multilingual catalog of trivia questions with categories, topics, provenance, and correction reporting.
Herramientas
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['categories', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'language'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'language': {'type': 'string'}}, 'description': 'Response metadata: how many categories returned and which language.', 'additionalProperties': {}}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'All 24 top-level categories with localized names.'}}, 'additionalProperties': False}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['languages', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'language'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'language': {'type': 'string'}}, 'description': 'Response metadata.', 'additionalProperties': {}}, 'languages': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'displayName'], 'properties': {'code': {'type': 'string'}, 'displayName': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Supported languages with localized display name and question count per language.'}}, 'additionalProperties': False}
Esquema de entrada
{'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`.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['questions', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'countMode', 'language', 'nextCursor'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'language': {'type': 'string'}, 'countMode': {'enum': ['exact', 'none'], 'type': 'string'}, 'nextCursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'description': 'Pagination metadata: count of returned rows, total (exact match count, only when count=exact), nextCursor (null = end), language echoed.', 'additionalProperties': {}}, 'questions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text'], '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)$'}, 'text': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Array of trivia questions for the current page, each with full attribution.'}}, 'additionalProperties': False}
Esquema de entrada
{'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`.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['question'], 'properties': {'error': {'type': 'string', 'description': 'Error code when question is null (e.g. `not_found`).'}, 'question': {'anyOf': [{'type': 'object', 'required': ['id', 'text'], '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)$'}, 'text': {'type': 'string'}}, 'additionalProperties': {}}, {'type': 'null'}], 'description': 'Question object with full attribution and quality flag. Null when not found.'}}, 'additionalProperties': False}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['questions', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'language'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'language': {'type': 'string'}}, 'description': 'Response metadata: how many questions returned and which language.', 'additionalProperties': {}}, 'questions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'text'], '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)$'}, 'text': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Array of trivia questions, each carries full per-record attribution.'}}, 'additionalProperties': False}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['regions', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'total', 'language', 'nextCursor'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'language': {'type': 'string'}, 'nextCursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'description': 'Pagination metadata: count returned, total available, cursor for next page.', 'additionalProperties': {}}, 'regions': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'kind', 'label', 'count'], 'properties': {'code': {'type': 'string'}, 'kind': {'enum': ['country', 'cultural'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'label': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Region codes (cultural affinity) with localized labels, kind (country|cultural), and per-region counts.'}}, 'additionalProperties': False}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ok'], 'properties': {'ok': {'type': 'boolean', 'const': True, 'description': 'Always true on success; failures use isError, not this field.'}, 'reportId': {'type': 'string', 'description': 'UUID of the recorded report. Use for follow-up references.'}}, 'additionalProperties': False}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['total', 'byLanguage', 'bySource', 'byDifficulty', 'byCategory', 'byTopic', 'byTag', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['generatedAt', 'language'], 'properties': {'language': {'type': 'string'}, 'generatedAt': {'type': 'string'}}, 'description': 'Snapshot metadata: generation timestamp and echoed language.', 'additionalProperties': {}}, 'byTag': {'type': 'array', 'items': {'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Top 30 raw tags with localized labels.'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Approved questions count across all supported languages.'}, 'byTopic': {'type': 'array', 'items': {'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Top 30 curated topics with localized labels.'}, 'bySource': {'type': 'object', 'description': 'Count per source database (12 keys).', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'byCategory': {'type': 'array', 'items': {'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Top 24 categories with localized names and counts.'}, 'byLanguage': {'type': 'object', 'description': 'Count per language code.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'byDifficulty': {'type': 'object', 'description': 'Count per difficulty bucket (trivial / easy / medium / hard / expert / unrated).', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}}, 'additionalProperties': False}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subcategories', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'total', 'language', 'nextCursor'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'language': {'type': 'string'}, 'nextCursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'description': 'Pagination metadata: count returned, total available, cursor for next page.', 'additionalProperties': {}}, 'subcategories': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'label', 'count'], 'properties': {'slug': {'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'label': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Subcategories on this page with localized labels and per-subcategory counts.'}}, 'additionalProperties': False}
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tags', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'total', 'language', 'nextCursor'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'language': {'type': 'string'}, 'nextCursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'description': 'Pagination metadata: count returned, total available, cursor for next page.', 'additionalProperties': {}}, 'tags': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'label', 'count'], 'properties': {'slug': {'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'label': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Tags on this page with display labels and per-tag question counts.'}}, 'additionalProperties': False}
Esquema de entrada
{'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`).'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['topic'], 'properties': {'meta': {'type': 'object', 'required': ['language'], 'properties': {'language': {'type': 'string'}}, 'description': 'Response metadata.', 'additionalProperties': {}}, 'error': {'type': 'string', 'description': 'Error code when topic is null (e.g. `not_found`).'}, 'topic': {'anyOf': [{'type': 'object', 'required': ['slug', 'label'], 'properties': {'slug': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': {}}, {'type': 'null'}], 'description': 'Topic detail with metadata. Null if slug not found.'}, 'facets': {'type': 'object', 'properties': {}, 'description': 'Facet breakdowns: byCategory, byDifficulty, byLanguage, coOccurringTags, coOccurringSubcategories.', 'additionalProperties': {}}, 'samples': {'type': 'array', 'items': {'type': 'object', '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)$'}}, 'additionalProperties': {}}, 'description': 'Up to 3 sample questions matching this topic.'}}, 'additionalProperties': False}
Esquema de entrada
{'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."}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['topics', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'total', 'language', 'nextCursor'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'language': {'type': 'string'}, 'nextCursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'description': 'Pagination metadata: count returned, total available, cursor for next page.', 'additionalProperties': {}}, 'topics': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'label'], 'properties': {'slug': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Topics on this page with localized labels, counts, and underlying kind.'}}, 'additionalProperties': False}
Cambios recientes en herramientas
Servidores MCP similares
Riddle
Builds, edits, publishes, embeds, and analyzes quizzes, polls, forms, personality tests, and related question banks.
api
Creates, manages, AI-generates, and renders quiz and flashcard videos, including templates and downloadable video outputs.
PodLearn
Searches podcasts and YouTube, transcribes episodes, searches transcripts, generates structured lessons, and creates LinkedIn pos…
Tutorializer Video Tutorials
Manages localized tutorials, voiceover segments, pronunciation rules, and registered rendered tutorial videos.
Escola de Rádio TV & Web (ER+)
Provides read-only access to a Brazilian radio school's courses, classes, teachers, podcasts, blog, services, and availability.
Brainiall Pronunciation
Assesses English pronunciation, transcribes audio, identifies speakers by voiceprint and synthesizes English speech in multiple v…
Speech AI - Pronunciation, STT & TTS
Supports English pronunciation assessment, multilingual speech transcription, text-to-speech synthesis, and phoneme reference dat…
Soluble(s) — Podcast de journalisme de solutions
Searches French solutions-journalism podcast episodes and transcripts, including child-friendly versions and practical actions.