The Quiz.Video MCP connector routes your AI agent's tool calls to Quiz.Video's own MCP server through Scalekit. Each user signs in to Quiz.Video once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 30 tools.
- Tools
- 30
- What they doRead · write · destructive
- 14 · 12 · 414 read12 write4 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Quiz.Video MCP connection
In AgentKit > Connections, create a Quiz.Video MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Quiz.Video MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'quizvideomcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Quiz.Video MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'quizvideomcp_quiz_video_get_account',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "quizvideomcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Quiz.Video MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="quizvideomcp_quiz_video_get_account",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolquizvideomcp_get_api_catalogReturn the Quiz.Video API catalog linkset for agent discovery.Read-onlyGet API catalog
Return the Quiz.Video API catalog linkset for agent discovery.
Inputs
This tool takes no inputs.
quizvideomcp_get_llms_txtReturn a compact LLM-readable summary of the Quiz.Video API.Read-onlyGet LLM API summary
Return a compact LLM-readable summary of the Quiz.Video API.
Inputs
This tool takes no inputs.
quizvideomcp_get_openapi_specReturn the Quiz.Video OpenAPI 3.1 specification.Read-onlyGet OpenAPI specification
Return the Quiz.Video OpenAPI 3.1 specification.
Inputs
This tool takes no inputs.
quizvideomcp_quiz_video_get_accountGet the authenticated user's account info, plan, and usage limits.Read-onlyGet account
Get the authenticated user's account info, plan, and usage limits.
Inputs
This tool takes no inputs.
quizvideomcp_quiz_video_get_flashcard_deckFetch a flashcard deck (including all cards) by id.Read-onlyGet a flashcard deck
Fetch a flashcard deck (including all cards) by id.
Inputs
deckIdstringrequired- Flashcard deck ID.
quizvideomcp_quiz_video_get_quizFetch a single quiz (including settings and metadata) by id.Read-onlyGet a quiz
Fetch a single quiz (including settings and metadata) by id.
Inputs
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
quizvideomcp_quiz_video_get_renderFetch the status and progress of a render session.Read-onlyGet 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.
Inputs
sessionIdstringrequired- Render session id returned when the render was started.
quizvideomcp_quiz_video_get_templateFetch a single custom template (including the full scenes/layers payload) by id.Read-onlyGet a custom template
Fetch a single custom template (including the full scenes/layers payload) by id.
Inputs
templateIdstringrequired- Template id (tpl_...).
quizvideomcp_quiz_video_list_flashcard_decksList flashcard decks owned by the authenticated user with optional pagination.Read-onlyList flashcard decks
List flashcard decks owned by the authenticated user with optional pagination.
Inputs
limitnumber- Results per page (1–100, default 20).
pagenumber- 1-indexed page number.
quizvideomcp_quiz_video_list_musicList available background music tracks.Read-onlyList music library
List available background music tracks.
Inputs
This tool takes no inputs.
quizvideomcp_quiz_video_list_quiz_hooksList video hooks configured for a quiz.Read-onlyList quiz hooks
List video hooks configured for a quiz.
Inputs
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
quizvideomcp_quiz_video_list_quiz_questionsList questions (and their answers) for a quiz.Read-onlyList quiz questions
List questions (and their answers) for a quiz.
Inputs
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
quizvideomcp_quiz_video_list_quizzesList quizzes owned by the authenticated user with optional pagination (page, limit).Read-onlyList quizzes
List quizzes owned by the authenticated user with optional pagination (page, limit).
Inputs
limitnumber- Results per page (1–100, default 20).
pagenumber- 1-indexed page number.
quizvideomcp_quiz_video_list_templatesList the caller's saved custom templates (and optionally public ones).Read-onlyList custom templates
List the caller's saved custom templates (and optionally public ones). Templates are reusable scene-based designs that can be applied to many quizzes.
Inputs
includePublicboolean- Include public templates in addition to your own. Default true.
limitnumber- No description.
pagenumber- No description.
quizvideomcp_quiz_video_add_quiz_questionsAppend one or more questions (with their answers and optional images) to an existing quiz.WriteAdd questions to a quiz
Append one or more questions (with their answers and optional images) to an existing quiz.
Inputs
questionsarrayrequired- One or more questions to append to the quiz.
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
quizvideomcp_quiz_video_apply_templateApply a snapshot of a custom template to one or more quizzes you own.WriteApply template to quizzes
Apply 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.
Inputs
quizIdsarrayrequired- Quiz ids to apply the template to.
templateIdstringrequired- No description.
quizvideomcp_quiz_video_create_flashcard_deckCreate a flashcard deck.WriteCreate a flashcard deck
Create a flashcard deck. Required: title (3-120 chars) and cards[] (min 1). Optional: description (≤1200 chars), tags (≤50 each).
Inputs
cardsarrayrequired- Flashcards in the deck; at least one card is required.
titlestringrequired- Deck title (3–120 characters).
descriptionstring- Optional deck description (≤1200 characters).
tagsarray- Optional tags to categorize the deck (≤50 characters each).
quizvideomcp_quiz_video_create_quizCreate a quiz.WriteCreate a quiz
Create 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[].
Inputs
titlestringrequired- Human-readable quiz title.
backgroundMusicIdnumber- Background music track id from /api/v1/music. Omit to use the default YouTube-safe shared track; set null for silent.
countdownSecondsnumber- Seconds of countdown shown before each question (3–15).
descriptionstring- Optional longer description shown on the quiz page.
difficultystring- Target difficulty level for the generated/created quiz.one of
easymediumhardrising formatstring- Output aspect ratio: "tiktok" (9:16 vertical) or "youtube" (16:9 horizontal).one of
tiktokyoutube musicVolumenumber- Background music volume from 0 (silent) to 1 (full). Default 0.15.
questionsarray- Optional initial questions with their answers and images.
quizTypestring- Quiz mechanic: multiple_choice, reveal_answer, or picture_guess.one of
multiple_choicereveal_answerpicture_guess templatestring- Visual template id (e.g. "neon", "minimal").
themeCustomizationobject- Explicit custom theme to save and apply to the quiz. Invalid colors/fonts are ignored by the API sanitizer.
themeDescriptionstring- 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.
quizvideomcp_quiz_video_create_quiz_hookCreate a hook for a quiz.WriteCreate a quiz hook
Create a hook for a quiz. `hook` is a pass-through object whose fields follow the HookInput schema (see OpenAPI spec).
Inputs
hookobjectrequired- HookInput object (hookType, positionType, title, content, plus optional styling — see OpenAPI spec).
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
quizvideomcp_quiz_video_create_renderQueue a new video render for an existing quiz.WriteStart 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.
Inputs
quizIdstringrequired- ID of the quiz to render into a video.
quizvideomcp_quiz_video_create_templateSave a new custom template authored in the drag-and-drop editor.WriteCreate a custom template
Save a new custom template authored in the drag-and-drop editor. Required: template (the CustomTemplate JSON). Optional: name, description, thumbnail, isDefault, isPublic.
Inputs
templateobjectrequired- CustomTemplate JSON with scenes.hook/question/answer and canvas.
descriptionstring- No description.
isDefaultboolean- Mark as your default template (replaces any existing default).
isPublicboolean- Make discoverable to other users.
namestring- No description.
thumbnailstring- Optional preview image URL or data URI.
quizvideomcp_quiz_video_download_renderRequest a signed download URL for a completed render.WriteGet render download URL
Request a signed download URL for a completed render.
Inputs
sessionIdstringrequired- Render session id for a completed render.
quizvideomcp_quiz_video_generate_quizAI-generate and save a quiz from a topic.WriteGenerate a quiz with AI
AI-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.
Inputs
topicstringrequired- Subject the AI should build the quiz around.
answerOptionCountnumber- For multiple-choice quizzes, generate 3 or 4 answer options per question. Defaults to 4.one of
34 autoRenderboolean- 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.
backgroundMusicIdnumber- Background music track id from /api/v1/music. Omit to use the default YouTube-safe shared track; set null for silent.
countdownSecondsnumber- Seconds of countdown shown before each question (3-15).
difficultystring- Target difficulty level.one of
easymediumhardrising extraDirectionstring- Additional instructions to steer the AI (tone, focus areas, exclusions).
formatstring- Output aspect ratio. Defaults to "tiktok".one of
tiktokyoutube musicVolumenumber- Background music volume from 0 (silent) to 1 (full). Default 0.15.
numberOfQuestionsnumber- How many questions to generate (1–200).
progressBarStylestring- Countdown progress indicator style.one of
circleline quizTypestring- Quiz mechanic to generate.one of
multiple_choicereveal_answerpicture_guess templatestring- Visual template id. If omitted, the saved custom theme can suggest a matching template.
themeCustomizationobject- Explicit custom theme to save and apply to the generated quiz. Use themeDescription for prompt-style themes.
themeDescriptionstring- Natural-language custom visual theme prompt. Example: "golden luxury game show", "ocean glass", or "cyber neon".
quizvideomcp_quiz_video_update_quizUpdate a quiz.WriteUpdate quiz settings
Update a quiz. `updates` accepts any subset of quiz settings (title, description, format, template, timing, music, TTS, publish status, etc.).
Inputs
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
updatesobjectrequired- Partial quiz settings object; only included fields are updated.
quizvideomcp_quiz_video_update_quiz_hookUpdate an existing hook on a quiz.WriteUpdate a quiz hook
Update an existing hook on a quiz. Requires quizId and numeric hookId; `updates` is a partial HookInput.
Inputs
hookIdnumberrequired- Numeric id of the hook to update (from list_quiz_hooks).
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
updatesobjectrequired- Partial HookInput object; only included fields are updated.
quizvideomcp_quiz_video_update_templateUpdate an existing template.WriteUpdate a custom template
Update an existing template. Any subset of fields may be supplied; omitted fields stay unchanged.
Inputs
templateIdstringrequired- No description.
descriptionstring- No description.
isDefaultboolean- No description.
isPublicboolean- No description.
namestring- No description.
templateobject- No description.
thumbnailstring- No description.
quizvideomcp_quiz_video_delete_flashcard_deckPermanently delete a flashcard deck and all of its cards.DestructiveDelete a flashcard deck
Permanently delete a flashcard deck and all of its cards.
Inputs
deckIdstringrequired- Flashcard deck ID.
quizvideomcp_quiz_video_delete_quizPermanently delete a quiz and all of its questions, answers, and hooks.DestructiveDelete a quiz
Permanently delete a quiz and all of its questions, answers, and hooks.
Inputs
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
quizvideomcp_quiz_video_delete_quiz_hookDelete a single hook from a quiz.DestructiveDelete a quiz hook
Delete a single hook from a quiz.
Inputs
hookIdnumberrequired- Numeric id of the hook to delete.
quizIdstringrequired- Quiz ID in YouTube-style 11-character base64url format.
quizvideomcp_quiz_video_delete_templatePermanently delete a custom template you own.DestructiveDelete a custom template
Permanently delete a custom template you own. Quizzes that have a snapshot of this template are unaffected — the snapshot remains in their themeCustomization.
Inputs
templateIdstringrequired- No description.
No tools match.