Quiz.Video MCP Server
Create quizzes and flashcards by conversation with any MCP-compatible AI assistant.
Quick connect
Add Quiz.Video as a remote MCP server using this streamable-HTTP endpoint:
https://www.quiz.video/mcp/Claude Desktop
Go to Settings → Connectors → Add custom connector, paste the server URL above, then approve the OAuth consent screen.
Claude.ai
Go to Settings → Connected apps → Connect custom, paste the server URL above, then approve the OAuth consent screen.
What you can do
The server exposes 24 tools that map 1:1 onto the Quiz.Video REST API. Discovery tools are anonymous. All quiz_video_* tools require OAuth 2.1 Bearer authentication.
Discovery
| Name | Title | Description |
|---|---|---|
get_api_catalog | Get API catalog | Return the Quiz.Video API catalog linkset for agent discovery. |
get_openapi_spec | Get OpenAPI specification | Return the Quiz.Video OpenAPI 3.1 specification. |
get_llms_txt | Get LLM API summary | Return a compact LLM-readable summary of the Quiz.Video API. |
Quizzes
| Name | Title | Description |
|---|---|---|
quiz_video_list_quizzes | List quizzes | List quizzes owned by the authenticated user with optional pagination (page, limit). |
quiz_video_get_quiz | Get a quiz | Fetch a single quiz (including settings and metadata) by id. |
quiz_video_create_quiz | Create a quiz | Create a quiz. Required: title. Optional: description, format, quizType, template, countdownSeconds, difficulty, backgroundMusicId, musicVolume, and an optional questions[] array (each with answers[] and images[]). |
quiz_video_generate_quiz | Generate a quiz with AI | AI-generate and save a quiz from a topic. Required: topic. Optional: extraDirection, numberOfQuestions (1-20), difficulty, quizType, autoRender. The response `data` always includes a `watchUrl` (the public quiz-viewer page — instantly playable). When autoRender is true, `data.render` also contains the queued render session so the agent can poll quiz_video_get_render for the MP4. |
quiz_video_update_quiz | Update quiz settings | Update a quiz. `updates` accepts any subset of quiz settings (title, description, format, template, timing, music, TTS, publish status, etc.). |
quiz_video_delete_quiz | Delete a quiz | Permanently delete a quiz and all of its questions, answers, and hooks. |
quiz_video_list_quiz_questions | List quiz questions | List questions (and their answers) for a quiz. |
quiz_video_add_quiz_questions | Add questions to a quiz | Append one or more questions (with their answers and optional images) to an existing quiz. |
Quiz Hooks
| Name | Title | Description |
|---|---|---|
quiz_video_list_quiz_hooks | List quiz hooks | List video hooks configured for a quiz. |
quiz_video_create_quiz_hook | Create a quiz hook | Create a hook for a quiz. `hook` is a pass-through object whose fields follow the HookInput schema (see OpenAPI spec). |
quiz_video_update_quiz_hook | Update a quiz hook | Update an existing hook on a quiz. Requires quizId and numeric hookId; `updates` is a partial HookInput. |
quiz_video_delete_quiz_hook | Delete a quiz hook | Delete a single hook from a quiz. |
Flashcards
| Name | Title | Description |
|---|---|---|
quiz_video_list_flashcard_decks | List flashcard decks | List flashcard decks owned by the authenticated user with optional pagination. |
quiz_video_get_flashcard_deck | Get a flashcard deck | Fetch a flashcard deck (including all cards) by id. |
quiz_video_create_flashcard_deck | Create a flashcard deck | Create a flashcard deck. Required: title (3-120 chars) and cards[] (min 1). Optional: description (≤1200 chars), tags (≤50 each). |
quiz_video_delete_flashcard_deck | Delete a flashcard deck | Permanently delete a flashcard deck and all of its cards. |
Renders
| Name | Title | Description |
|---|---|---|
quiz_video_create_render | Start render | Queue a new video render for an existing quiz. Returns the render sessionId; poll quiz_video_get_render until its status is "completed" (typically 1-5 minutes), then call quiz_video_download_render to obtain the signed MP4 URL. The quiz itself is viewable immediately at /quiz/{slug}/ regardless of render status. |
quiz_video_get_render | Get render status | Fetch the status and progress of a render session. When status is "completed", the response also contains a signed `videoUrl` (and `filename`) so the agent can share the MP4 directly without a separate quiz_video_download_render call. In-progress polls return status + progress. |
quiz_video_download_render | Get render download URL | Request a signed download URL for a completed render. |
Account & metadata
| Name | Title | Description |
|---|---|---|
quiz_video_get_account | Get account | Get the authenticated user's account info, plan, and usage limits. |
quiz_video_list_music | List music library | List available background music tracks. |
Authentication
Quiz.Video uses OAuth 2.1 with PKCE and dynamic client registration (RFC 7591), so MCP clients can register programmatically the first time a user connects. The flow looks like this:
- The client fetches
/.well-known/oauth-protected-resource/api/v1to discover the authorization server. - The client registers itself at the registration endpoint advertised by
/.well-known/oauth-authorization-server. - The user is redirected to Quiz.Video to grant access (authorization code + PKCE).
- The client exchanges the code for a JWT access token bound to
https://www.quiz.video/api/v1with scopesapi:read api:write. - The client calls tools over MCP with
Authorization: Bearer <token>.
For server-to-server callers that don't speak OAuth, the same REST API accepts an API key via x-api-key: qv_.... Generate keys from account settings. See the REST API docs for details.
Example prompts
Once connected, try asking your AI assistant things like:
“Generate a 10-question medium-difficulty quiz about the Roman Empire and publish it.”
“Create a Spanish vocabulary flashcard deck with 20 cards covering food and drink.”
“List my last 5 quizzes, start a render for the most recent one, and give me the download URL when it's ready.”
Security
- HTTPS only. The endpoint is served over TLS. Plain HTTP requests are redirected.
- Origin validation. Cross-origin browser requests are restricted to known AI-assistant origins; other origins receive a 403.
- No third-party sharing. The MCP server forwards your bearer token to the Quiz.Video REST API and returns API responses verbatim. No additional telemetry is shared.
- Scope enforcement. Read-only tools require
api:read; tools that mutate data requireapi:write. Tokens are JWTs bound to/api/v1and can be revoked at any time.
Discovery endpoints
MCP clients and API agents can discover Quiz.Video at the following well-known URLs:
/.well-known/mcp/server-card.json— MCP server card/.well-known/openid-configuration— OpenID/OAuth discovery/.well-known/oauth-authorization-server— OAuth 2.1 authorization server metadata/.well-known/oauth-protected-resource/api/v1— protected-resource metadata for the API/.well-known/openapi.json— OpenAPI 3.1 spec/.well-known/api-catalog— API catalog linkset
Support
Email support@quiz.video. Security: security@quiz.video.
Prefer raw HTTP?
The same functionality is available via our REST API.