Reference · Model Context Protocol
Quiz Master MCP server — tool reference
Everything a connected AI can call, and what it needs to call it. 17 tools over your quizzes, your question library and your media — remote, OAuth sign-in, no API key.
Updated
https://thequizmaster.app/mcpJust want it working? The setup guides for Claude and ChatGPT are shorter, and the prompt library shows these tools in use.
The handshake
Connection facts.
What your client negotiates when you paste the URL. You never type any of it — it’s here for the curious and the people writing their own client.
- Endpoint
One URL. Tool calls are POSTed to it; GET and DELETE answer 405.
https://thequizmaster.app/mcp
- Transport
MCP Streamable HTTP, stateless. Every request is served on its own and answered with a plain JSON response — no session id, no server-sent event stream.
- Sign-in
OAuth 2.1 authorization-code flow with dynamic client registration, so your client registers itself. PKCE with S256 is required; clients are public, and no client secret is ever issued.
You sign in on a Quiz Master page with your existing account — Google, or email and password — and approve the client.
/.well-known/oauth-protected-resource/.well-known/oauth-authorization-server/mcp/register/mcp/authorize/mcp/token
- Tokens
Opaque bearer tokens, stored hashed. Access tokens last an hour; refresh tokens 30 days and are replaced each time they’re used. Authorization codes expire after 10 minutes and work once.
- Whose data
Yours only. Every read and write is checked against the signed-in account; another host’s quiz or question id simply reads as not found.
- Nothing deletes
No tool deletes a quiz, a question or a stored file. Removing a segment takes it out of the running order; removing a round or a question from a round only drops references — the questions stay in your library.
- Media import
Images, audio and video only, up to 25 MB, no SVG; the source must be an http(s) URL. YouTube links are rejected by import_media — put the YouTube URL straight on the question’s media.url instead, where the presenter plays it natively.
17 tools · 5 groups
Every tool.
Inputs are validated on the server and a bad call comes back as a readable error the AI can correct itself from. All text fields are language maps — { "en": "…", "de": "…" }.
Quizzes
Quiz templates — the thing you build once and play on many nights.
| Tool | What it does | Key inputs |
|---|---|---|
list_quizzes | Lists your quizzes, newest first: id, title, languages, theme, question count per round and when each was last changed. | None |
get_quiz | Returns one quiz in full — settings, metadata and the whole timeline. Questions come back inline, each with the snippetId the question tools need. |
|
create_quiz | Creates a quiz. Pass a full timeline to import a whole night in one call, or leave it out and build with add_segment. Inline questions are filed into your question library automatically. A timeline passed here is taken exactly as given — answer-reveal slides are not added for you. |
|
update_quiz | Patches a quiz’s title, description, theme, languages and settings. Only the fields you pass change; the timeline has its own tools. Settings include half points and the bilingual display mode (single, or primary-with-subtitle). The builder has no settings panel yet, so this is the way to change them. |
|
Timeline segments
The running order: welcome, rules, rounds, reveals, breaks, scores.
| Tool | What it does | Key inputs |
|---|---|---|
add_segment | Adds one segment to a quiz, at the end or at a position. A round’s inline questions go into your library and the round keeps references to them. Adding a round also adds its answer-reveal right after it, already linked. Pass pairReveal: false to skip that. |
|
update_segment | Patches one segment’s own fields — a welcome headline, a round title, a break’s length, a reveal’s pacing. Not for a round’s questions: use add_questions_to_round and remove_question_from_round. |
|
remove_segment | Takes a segment out of the timeline. Removing a round leaves its questions in your library. If that leaves an answer-reveal pointing at nothing, the result says so. |
|
move_segment | Moves a segment to a new position and renumbers the rest. |
|
Question library
Every question lives once, in your library; rounds point at it.
| Tool | What it does | Key inputs |
|---|---|---|
search_questions | Searches your library. Filters combine: text matches prompts, answers and sub-questions; tags must all match; type and difficulty match exactly. Returns summaries. |
|
get_question | Returns one question in full: prompt, answer, media, clue stages, sub-questions and tags. |
|
create_question | Writes a question into your library without putting it in any quiz. |
|
update_question | Patches a question. The change shows up in every quiz that uses it — including quizzes you’ve already played. Changing the type needs a matching answer in the same patch. Passing tags replaces the whole list. |
|
add_questions_to_round | Adds one or more questions to a round. Each entry is either a new question, written into your library, or { snippetId } to reuse one you already have. |
|
remove_question_from_round | Takes a question out of a round. The question itself stays in your library and in any other quiz. |
|
Media
Pictures and sound that still load on the night.
| Tool | What it does | Key inputs |
|---|---|---|
import_media | Copies a remote image, audio or video file into Quiz Master’s own storage and returns a permanent URL to put on a question, clue stage or sub-question. Pass the direct file URL (ending .jpg, .mp3, .mp4…), not a web page. 25 MB cap, no SVG. YouTube is rejected — use the YouTube URL on the question directly. |
|
Reference
What a client reads before it writes.
| Tool | What it does | Key inputs |
|---|---|---|
get_authoring_guide | Returns the authoring guide: the language-map convention, the running order of a pub quiz, every question shape, how media works, and what makes a good pub-quiz question. The tool descriptions tell the AI to read this first. | None |
list_themes | Lists the presenter themes with a one-line description of each, for create_quiz and update_quiz. | None |
Inside the inputs
The shapes, at a glance.
The full schema is what get_authoring_guide returns. These are the lists people ask about.
- Question types
Nine. The answer’s type must match the question’s.
short-answermultiple-choicetrue-falsenumericorderingmulti-partlistmatchingmulti-select
- Segment types
Fourteen, for add_segment.
welcometable-arrangementrulesround-introroundanswer-revealround-endswap-answer-sheetbreakscoreboardmediacustom-slidefinal-scoresoutro
- Media
On a question, clue stage or sub-question. kind is inferred from the URL when left out; audio on a YouTube URL plays it hidden until the answer.
kindurlstartSecendSeccaptionrevealOnAnswer
- Multi-stage questions
Clue stages are reveals shown before the question; sub-questions are scored separately under one setup card.
clueStagessubQuestions
On purpose
What’s deliberately not there.
No delete tools
Nothing on the server deletes a quiz, a question or a stored file. The worst a muddled prompt can do is add something you don’t want.
No events or scoring — yet
The connector writes quizzes. Scheduling a night, entering teams and scoring them happens in the app. Event and scoring tools aren’t built.
No “move question” tool
To reorder questions inside a round, remove one and add it back by snippetId at a position. Rounds hold references, so nothing is lost on the way.
No flag picking
The AI can set the Flag theme, but the country is chosen in the app, on the event or in the builder.
Client config
Adding it by hand.
In claude.ai, Claude Desktop and ChatGPT you paste the URL into a connector dialog — see Connect your AI. In a terminal, it’s one line.
Claude Code
One line in a terminal. Claude Code opens a browser for the Quiz Master sign-in.
claude mcp add --transport http quiz-master https://thequizmaster.app/mcpClaude Code, per project
Or commit it to a repo as .mcp.json so everyone working in it gets the server.
{
"mcpServers": {
"quiz-master": {
"type": "http",
"url": "https://thequizmaster.app/mcp"
}
}
}You bring the model. We’ll bring the stage.
Sign in once, connect once, and never open a blank quiz again.