# video.quiz/api

> Quiz.Video MCP: list, create, AI-generate, and render quiz and flashcard videos.

- name: video.quiz/api
- version: 0.1.0
- connection class: R0 (autonomous)
- trust: 76/100 flags: no-repository
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/video.quiz%2Fapi
- tools: https://api.protogrid.dev/v1/servers/video.quiz%2Fapi/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "quiz": {
      "type": "http",
      "url": "https://www.quiz.video/mcp/"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 65
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-174d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 31 of 31 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 12 of 31 tools declare all four hints; missing: get_api_catalog (destructiveHint, idempotentHint, openWorldHint); quiz_video_list_flashcard_decks (destructiveHint, idempotentHint, openWorldHint); quiz_video_list_quizzes (destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 6,894 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 2 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 31, about 6,894 tokens to load them all
- tool set hash: 40fd3c72bc7923157dcca5dc1911dd85
- tools last changed: 2026-10-18T09:06:13.304Z
- badge: [![protogrid quality](https://protogrid.dev/badge/video.quiz/api.svg)](https://protogrid.dev/servers/video.quiz/api)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-18 `quiz_video_generate_quiz` changed (inputSchema)
- 2026-10-18 `get_api_index` added
  - Return the GET /api/v1 index: documentation and OpenAPI URLs, OAuth/API-key auth metadata, rate-limit and versioning policy, and every resource URL.

Full history: https://api.protogrid.dev/v1/servers/video.quiz%2Fapi/changes

## Remotes

- https://www.quiz.video/mcp/ (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (31)

- `get_api_catalog`: Return the Quiz.Video API catalog linkset for agent discovery.
- `get_api_index`: Return the GET /api/v1 index: documentation and OpenAPI URLs, OAuth/API-key auth metadata, rate-limit and versioning policy, and every resource URL.
- `get_llms_txt`: Return a compact LLM-readable summary of the Quiz.Video API.
- `get_openapi_spec`: Return the Quiz.Video OpenAPI 3.1 specification.
- `quiz_video_add_quiz_questions`: Append one or more questions (with their answers and optional images) to an existing quiz.
- `quiz_video_apply_template`: 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.
- `quiz_video_create_flashcard_deck`: Create a flashcard deck. Required: title (3-120 chars) and cards[] (min 1). Optional: description (≤1200 chars), tags (≤50 each).
- `quiz_video_create_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[].
- `quiz_video_create_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_create_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_create_template`: Save a new custom template authored in the drag-and-drop editor. Required: template (the CustomTemplate JSON). Optional: name, description, thumbnail, isDefault, isPublic.
- `quiz_video_delete_flashcard_deck`: Permanently delete a flashcard deck and all of its cards.
- `quiz_video_delete_quiz`: Permanently delete a quiz and all of its questions, answers, and hooks.
- `quiz_video_delete_quiz_hook`: Delete a single hook from a quiz.
- `quiz_video_delete_template`: Permanently delete a custom template you own. Quizzes that have a snapshot of this template are unaffected — the snapshot remains in their themeCustomization.
- `quiz_video_download_render`: Request a signed download URL for a completed render.
- `quiz_video_generate_quiz`: 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.
- `quiz_video_get_account`: Get the authenticated user's account info, plan, and usage limits.
- `quiz_video_get_flashcard_deck`: Fetch a flashcard deck (including all cards) by id.
- `quiz_video_get_quiz`: Fetch a single quiz (including settings and metadata) by id.
- `quiz_video_get_render`: 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_get_template`: Fetch a single custom template (including the full scenes/layers payload) by id.
- `quiz_video_list_flashcard_decks`: List flashcard decks owned by the authenticated user with optional pagination.
- `quiz_video_list_music`: List available background music tracks.
- `quiz_video_list_quiz_hooks`: List video hooks configured for a quiz.
- `quiz_video_list_quiz_questions`: List questions (and their answers) for a quiz.
- `quiz_video_list_quizzes`: List quizzes owned by the authenticated user with optional pagination (page, limit).
- `quiz_video_list_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.
- `quiz_video_update_quiz`: Update a quiz. `updates` accepts any subset of quiz settings (title, description, format, template, timing, music, TTS, publish status, etc.).
- `quiz_video_update_quiz_hook`: Update an existing hook on a quiz. Requires quizId and numeric hookId; `updates` is a partial HookInput.
- `quiz_video_update_template`: Update an existing template. Any subset of fields may be supplied; omitted fields stay unchanged.
