video.quiz/api
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Quiz.Video MCP: list, create, AI-generate, and render quiz and flashcard videos.
| Author | video.quiz |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2106 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"api": {
"url": "https://www.quiz.video/mcp/",
"transport": "streamable-http"
}
}
}
Measured tools (31)
get_api_catalogread-onlyReturn the Quiz.Video API catalog linkset for agent discovery.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_openapi_specread-onlyReturn the Quiz.Video OpenAPI 3.1 specification.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_llms_txtread-onlyReturn a compact LLM-readable summary of the Quiz.Video API.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_api_indexread-onlyReturn the GET /api/v1 index: documentation and OpenAPI URLs, OAuth/API-key auth metadata, rate-limit and versioning policy, and every resource URL.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_list_quizzesread-onlyList quizzes owned by the authenticated user with optional pagination (page, limit).
Parameters:
page— number — 1-indexed page number.limit— number — Results per page (1–100, default 20).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_get_quizread-onlyFetch a single quiz (including settings and metadata) by id.
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_create_quizCreate a quiz. Prefer sending themeDescription or themeCustomization so the saved quiz has a custom visual theme; if omitted, the server derives one from the title/description. Omit backgroundMusicId to use default YouTube-safe shared background music, or set null for silent. Required: title. Optional: description, format, quizType, template, countdownSeconds, difficulty, musicVolume, and questions[].
Parameters:
title(required) — string — Human-readable quiz title.format— string — Output aspect ratio: "tiktok" (9:16 vertical) or "youtube" (16:9 horizontal).quizType— string — Quiz mechanic: multiple_choice, reveal_answer, or picture_guess.template— string — Visual template id (e.g. "neon", "minimal").questions— array — Optional initial questions with their answers and images.difficulty— string — Target difficulty level for the generated/created quiz.description— string — Optional longer description shown on the quiz page.musicVolume— number — Background music volume from 0 (silent) to 1 (full). Default 0.15.countdownSeconds— number — Seconds of countdown shown before each question (3–15).themeDescription— string — Natural-language custom visual theme prompt. Example: "golden luxury game show", "ocean glass", or "cyber neon". The server saves the generated themeCustomization and applies it automatically.backgroundMusicId— ['number', 'null'] — Background music track id from /api/v1/music. Omit to use the default YouTube-safe shared track; set null for silent.themeCustomization— object — Explicit custom theme to save and apply to the quiz. Invalid colors/fonts are ignored by the API sanitizer.
Hints: read-only no · destructive no · idempotent no · open-world yes
quiz_video_generate_quizAI-generate and save a quiz from a topic. Prefer providing themeDescription or themeCustomization; when omitted, the server derives and saves a topic-based custom theme. Omit backgroundMusicId to use default YouTube-safe shared background music, or set null for silent. 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.
Parameters:
topic(required) — string — Subject the AI should build the quiz around. Can be a short topic or a detailed multi-paragraph brief (up to 20,000 characters).format— string — Output aspect ratio. Defaults to "tiktok".quizType— string — Quiz mechanic to generate.template— string — Visual template id. If omitted, the saved custom theme can suggest a matching template.autoRender— boolean — If true, immediately queue a video render for the new quiz. The render session (sessionId, status) is returned under `data.render`; poll quiz_video_get_render with that sessionId for progress and the final videoUrl. Rendering typically takes 1-5 minutes. Quiz creation is not blocked by render-queue failures — the quiz is returned either way.difficulty— string — Target difficulty level.musicVolume— number — Background music volume from 0 (silent) to 1 (full). Default 0.15.extraDirection— string — Additional instructions to steer the AI (tone, focus areas, exclusions). Up to 20,000 characters.countdownSeconds— number — Seconds of countdown shown before each question (3-15).progressBarStyle— string — Countdown progress indicator style.themeDescription— string — Natural-language custom visual theme prompt. Example: "golden luxury game show", "ocean glass", or "cyber neon".answerOptionCount— number — For multiple-choice quizzes, generate 3 or 4 answer options per question. Defaults to 4.backgroundMusicId— ['number', 'null'] — Background music track id from /api/v1/music. Omit to use the default YouTube-safe shared track; set null for silent.numberOfQuestions— number — How many questions to generate (1–200).themeCustomization— object — Explicit custom theme to save and apply to the generated quiz. Use themeDescription for prompt-style themes.
Hints: read-only no · destructive no · idempotent no · open-world yes
quiz_video_update_quizUpdate a quiz. `updates` accepts any subset of quiz settings (title, description, format, template, timing, music, TTS, publish status, etc.).
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.updates(required) — object — Partial quiz settings object; only included fields are updated.
Hints: read-only no · destructive no · idempotent yes · open-world yes
quiz_video_delete_quizdestructivePermanently delete a quiz and all of its questions, answers, and hooks.
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
quiz_video_list_quiz_questionsread-onlyList questions (and their answers) for a quiz.
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_add_quiz_questionsAppend one or more questions (with their answers and optional images) to an existing quiz.
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.questions(required) — array — One or more questions to append to the quiz.
Hints: read-only no · destructive no · idempotent no · open-world yes
quiz_video_list_quiz_hooksread-onlyList video hooks configured for a quiz.
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_create_quiz_hookCreate a hook for a quiz. `hook` is a pass-through object whose fields follow the HookInput schema (see OpenAPI spec).
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.hook(required) — object — HookInput object (hookType, positionType, title, content, plus optional styling — see OpenAPI spec).
Hints: read-only no · destructive no · idempotent no · open-world yes
quiz_video_update_quiz_hookUpdate an existing hook on a quiz. Requires quizId and numeric hookId; `updates` is a partial HookInput.
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.hookId(required) — number — Numeric id of the hook to update (from list_quiz_hooks).updates(required) — object — Partial HookInput object; only included fields are updated.
Hints: read-only no · destructive no · idempotent yes · open-world yes
quiz_video_delete_quiz_hookdestructiveDelete a single hook from a quiz.
Parameters:
quizId(required) — string — Quiz ID in YouTube-style 11-character base64url format.hookId(required) — number — Numeric id of the hook to delete.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
quiz_video_list_flashcard_decksread-onlyList flashcard decks owned by the authenticated user with optional pagination.
Parameters:
page— number — 1-indexed page number.limit— number — Results per page (1–100, default 20).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_get_flashcard_deckread-onlyFetch a flashcard deck (including all cards) by id.
Parameters:
deckId(required) — string — Flashcard deck ID.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_create_flashcard_deckCreate a flashcard deck. Required: title (3-120 chars) and cards[] (min 1). Optional: description (≤1200 chars), tags (≤50 each).
Parameters:
title(required) — string — Deck title (3–120 characters).cards(required) — array — Flashcards in the deck; at least one card is required.tags— array — Optional tags to categorize the deck (≤50 characters each).description— string — Optional deck description (≤1200 characters).
Hints: read-only no · destructive no · idempotent no · open-world no
quiz_video_delete_flashcard_deckdestructivePermanently delete a flashcard deck and all of its cards.
Parameters:
deckId(required) — string — Flashcard deck ID.
Hints: read-only no · destructive yes · idempotent yes · open-world no
quiz_video_create_renderQueue 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.
Parameters:
quizId(required) — string — ID of the quiz to render into a video.
Hints: read-only no · destructive no · idempotent no · open-world no
quiz_video_get_renderread-onlyFetch 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.
Parameters:
sessionId(required) — string — Render session id returned when the render was started.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_download_renderRequest a signed download URL for a completed render.
Parameters:
sessionId(required) — string — Render session id for a completed render.
Hints: read-only no · destructive no · idempotent yes · open-world no
quiz_video_get_accountread-onlyGet the authenticated user's account info, plan, and usage limits.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_list_musicread-onlyList available background music tracks.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_list_templatesread-onlyList the caller's saved custom templates (and optionally public ones). Templates are reusable scene-based designs that can be applied to many quizzes.
Parameters:
page— numberlimit— numberincludePublic— boolean — Include public templates in addition to your own. Default true.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_get_templateread-onlyFetch a single custom template (including the full scenes/layers payload) by id.
Parameters:
templateId(required) — string — Template id (tpl_...).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
quiz_video_create_templateSave a new custom template authored in the drag-and-drop editor. Required: template (the CustomTemplate JSON). Optional: name, description, thumbnail, isDefault, isPublic.
Parameters:
template(required) — object — CustomTemplate JSON with scenes.hook/question/answer and canvas.name— stringisPublic— boolean — Make discoverable to other users.isDefault— boolean — Mark as your default template (replaces any existing default).thumbnail— string — Optional preview image URL or data URI.description— string
Hints: read-only no · destructive no · idempotent no · open-world not declared
quiz_video_update_templateUpdate an existing template. Any subset of fields may be supplied; omitted fields stay unchanged.
Parameters:
templateId(required) — stringname— stringisPublic— booleantemplate— objectisDefault— booleanthumbnail— ['string', 'null']description— ['string', 'null']
Hints: read-only no · destructive no · idempotent yes · open-world not declared
quiz_video_delete_templatedestructivePermanently delete a custom template you own. Quizzes that have a snapshot of this template are unaffected — the snapshot remains in their themeCustomization.
Parameters:
templateId(required) — string
Hints: read-only no · destructive yes · idempotent yes · open-world not declared
quiz_video_apply_templateApply a snapshot of a custom template to one or more quizzes you own. Sets each quiz's template field to "custom" and writes the snapshot into themeCustomization.customTemplate. Future edits to the source template do not auto-propagate.
Parameters:
templateId(required) — stringquizIds(required) — array — Quiz ids to apply the template to.
Hints: read-only no · destructive no · idempotent yes · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.