Koskamo

QuizLink MCP

QuizLink MCP allows AI assistants to interact with the QuizLink platform to create and manage educational content. It supports generating courses, flashcards, quizzes, and various learning games, as well as tracking user progress and managing account settings through OAuth 2.0 authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

QuizLink MCP logo, by QuizLinkVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by QuizLink
You need:QuizLink uses OAuth 2.0 authentication.Sign in with your Google, Email, or Apple account to authorize the connection.
MCP endpoint (Streamable HTTP)
https://mcp.quizlink.net/stream
Vendor documentation

What you can do with it

  • Create interactive courses and flashcards
  • Generate quizzes and learning games
  • Track user learning progress and leaderboard
  • Manage account settings and preferences

Source and maintenance

Vendor evidenceRegistry 1.0.1

Protocol and capabilities

Server
quizlink-mcp 1.0.0
MCP protocol
2025-06-18
Tools
36 advertised
Resources
90 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {},
  "resources": {
    "listChanged": true
  }
}

Tools

36 advertised

about_quizlink — About QuizLink
Advertised by the server during the last successful anonymous check.
Advertised read-only

Show QuizLink's interactive feature guide. ONLY use when the user explicitly asks about QuizLink itself - questions like "what is QuizLink?", "show me QuizLink features", "help me get started with QuizLink", or "what can QuizLink do?". Do NOT use for general questions, math, conversation, or anything unrelated to learning about QuizLink's capabilities. Displays: coin costs, input sources (notes/images/PDFs/YouTube), 8 learning types (flashcards/podcasts/quizzes/etc), study games. FREE.

about_quizlink input schema
{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "Optional user ID to resume existing onboarding"
    }
  },
  "additionalProperties": false
}
about_quizlink annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
add_to_liked_courses — Bookmark Course
Advertised by the server during the last successful anonymous check.

Add a course to your favorites/bookmarks for quick access later. Requires authentication. FREE call that does NOT count against rate limits. Idempotent - can safely call multiple times with same course_id.

add_to_liked_courses input schema
{
  "type": "object",
  "required": [
    "course_id"
  ],
  "properties": {
    "course_id": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
add_to_liked_courses annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
change_flashcard_settings — Change Flashcard Settings
Advertised by the server during the last successful anonymous check.

Update your flashcard generation preferences. Requires authentication. Set reset_to_default=true to restore all defaults. **Settings:** - language: Any language code (e.g., "en", "es", "ja") - cards_per_unit_min/max: Card count range (4-7) - card_styles: Teaching persona array (e.g., ["supportive tutor"], ["professor"], ["study buddy"]) - image_theme: Any art style (e.g., "vibrant educational", "anime", "minimal", "watercolor") - image_source: "ai" (AI-generated images) or "stock" (stock images), default "ai" **Defaults:** en, 4-7 cards, supportive tutor persona, vibrant educational theme, AI images FREE (no coin cost).

change_flashcard_settings input schema
{
  "type": "object",
  "properties": {
    "language": {
      "type": [
        "null",
        "string"
      ]
    },
    "card_styles": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "image_theme": {
      "type": [
        "null",
        "string"
      ]
    },
    "image_source": {
      "type": [
        "null",
        "string"
      ]
    },
    "reset_to_default": {
      "type": [
        "null",
        "boolean"
      ]
    },
    "cards_per_unit_max": {
      "type": [
        "null",
        "integer"
      ]
    },
    "cards_per_unit_min": {
      "type": [
        "null",
        "integer"
      ]
    }
  },
  "additionalProperties": false
}
change_flashcard_settings annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
change_podcast_settings — Change Podcast Settings
Advertised by the server during the last successful anonymous check.

Update your podcast generation preferences. Requires authentication. All fields are optional. **Settings:** - language: Language code (max 5 chars). Supported: "en" (English), "es" (Spanish), "fr" (French), "de" (German), "it" (Italian), "pt" (Portuguese) - accent: Voice accent. Options: "US" (American), "UK" (British), "AU" (Australian) - num_tutors: 1 (Solo narrator) or 2 (Duo conversation) - podcast_length_min/max: Target length in minutes (1-10) - speaking_styles: Array like ["Conversational"], ["Educational", "Enthusiastic"], etc. **Examples:** - Spanish podcast: {"language": "es"} - British English: {"language": "en", "accent": "UK"} - Formal duo: {"num_tutors": 2, "speaking_styles": ["Formal", "Educational"]} FREE (no coin cost).

change_podcast_settings input schema
{
  "type": "object",
  "properties": {
    "accent": {
      "type": [
        "null",
        "string"
      ]
    },
    "language": {
      "type": [
        "null",
        "string"
      ]
    },
    "num_tutors": {
      "type": [
        "null",
        "integer"
      ]
    },
    "speaking_styles": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "podcast_length_max": {
      "type": [
        "null",
        "integer"
      ]
    },
    "podcast_length_min": {
      "type": [
        "null",
        "integer"
      ]
    }
  },
  "additionalProperties": false
}
change_podcast_settings annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
change_quiz_settings — Change Quiz Settings
Advertised by the server during the last successful anonymous check.

Update your quiz generation preferences. Requires authentication. Customize language, questions per unit (1-10), time limit, difficulty level, question types (multiple_choice, true_false, fill_blank, essay, matching), and passing score (0-100%). All fields are optional - only provided fields will be updated. FREE (no coin cost).

change_quiz_settings input schema
{
  "type": "object",
  "properties": {
    "language": {
      "type": [
        "null",
        "string"
      ]
    },
    "passing_score": {
      "type": [
        "null",
        "integer"
      ]
    },
    "question_types": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "difficulty_level": {
      "type": [
        "null",
        "string"
      ]
    },
    "time_limit_minutes": {
      "type": [
        "null",
        "integer"
      ]
    },
    "questions_per_unit_max": {
      "type": [
        "null",
        "integer"
      ]
    },
    "questions_per_unit_min": {
      "type": [
        "null",
        "integer"
      ]
    }
  },
  "additionalProperties": false
}
change_quiz_settings annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
complete_unit — Complete Learning Unit
Advertised by the server during the last successful anonymous check.

Mark a learning unit as completed after the user achieves a passing score (≥50%). Awards XP, unlocks the next unit, and checks for course completion. Called automatically by learning widgets (quiz, flashcards, etc.) when the user finishes. FREE call - no coin cost.

complete_unit input schema
{
  "type": "object",
  "required": [
    "unit_id",
    "course_id",
    "score"
  ],
  "properties": {
    "score": {
      "type": "number",
      "description": "The user's score (0-100). Must be ≥50 to complete the unit."
    },
    "unit_id": {
      "type": "string",
      "description": "The unit ID being completed (required)"
    },
    "course_id": {
      "type": "string",
      "description": "The course ID containing this unit (required)"
    },
    "learning_type": {
      "type": "string",
      "description": "Type of learning activity completed (mcq, flashcard, fill_blank, match_pair, ranking, crossword, podcast, infographic)"
    }
  },
  "additionalProperties": false
}
complete_unit annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_crossword — Create Crossword
Advertised by the server during the last successful anonymous check.

Generate an AI-powered crossword puzzle from either an existing unit (unit_id) or custom sources (title + notes/webpage/youtube/documents/images/audio/ai_research/ai_chat_context). Creates word-clue pairs and an interactive grid puzzle. Supports both course-based (unit_id) and standalone (sources) modes.

create_crossword input schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "description": "Text notes to include in content"
    },
    "title": {
      "type": "string",
      "description": "Title for standalone content generation (required when using sources)"
    },
    "unit_id": {
      "type": "string",
      "description": "Unit ID to generate content for (optional - use this OR provide sources)"
    },
    "course_id": {
      "type": "string",
      "description": "Course ID for unit completion tracking (optional - passed from course-syllabus widget)"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic - the more comprehensive, the better the output"
    },
    "description": {
      "type": "string",
      "description": "Description for standalone content generation"
    },
    "webpage_url": {
      "type": "string",
      "description": "Webpage URL to extract content from"
    },
    "youtube_link": {
      "type": "string",
      "description": "YouTube video URL as content source (video will be processed for learning content)"
    },
    "auto_research": {
      "type": "boolean",
      "description": "Auto-generate research content if no sources provided. Defaults to true when only title is given (no sources), false otherwise. Set explicitly to false to require manual sources."
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, etc.)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_crossword annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
create_excalidraw — Create Diagram
Advertised by the server during the last successful anonymous check.

Create a hand-drawn style diagram using Excalidraw. Generates 5-stage progressive diagrams for any concept - flowcharts, mind maps, math visualizations, system architectures, and more. Each stage builds on the previous one for an animated reveal effect. Costs 15 coins.

create_excalidraw input schema
{
  "type": "object",
  "required": [
    "prompt"
  ],
  "properties": {
    "prompt": {
      "type": "string",
      "description": "Description of the diagram to generate. Be specific about concepts, relationships, and visual layout."
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_excalidraw annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
create_fill_blank — Create Fill-in-the-Blank Quiz
Advertised by the server during the last successful anonymous check.

Generate 5 AI-powered fill-in-the-blank questions from either an existing unit (unit_id) or custom sources (title + notes/webpage/youtube/documents/images/audio/ai_research/ai_chat_context). Each question has multiple alternative answers. Supports both course-based (unit_id) and standalone (sources) modes.

create_fill_blank input schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "description": "Text notes to include in content"
    },
    "title": {
      "type": "string",
      "description": "Title for standalone content generation (required when using sources)"
    },
    "unit_id": {
      "type": "string",
      "description": "Unit ID to generate content for (optional - use this OR provide sources)"
    },
    "course_id": {
      "type": "string",
      "description": "Course ID for unit completion tracking (optional - passed from course-syllabus widget)"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic - the more comprehensive, the better the output"
    },
    "description": {
      "type": "string",
      "description": "Description for standalone content generation"
    },
    "webpage_url": {
      "type": "string",
      "description": "Webpage URL to extract content from"
    },
    "youtube_link": {
      "type": "string",
      "description": "YouTube video URL as content source (video will be processed for learning content)"
    },
    "auto_research": {
      "type": "boolean",
      "description": "Auto-generate research content if no sources provided. Defaults to true when only title is given (no sources), false otherwise. Set explicitly to false to require manual sources."
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, etc.)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_fill_blank annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
create_flashcards — Create Flashcards
Advertised by the server during the last successful anonymous check.

Generate 5 flashcards with interactive quizzing. To use: provide 'title' (required) and 'ai_research' with comprehensive topic research. Example: {"title": "NASA Basics", "ai_research": "[Your research about NASA...]"}. The ai_research field should contain detailed information about the topic - the more comprehensive your research, the better the flashcards. Optionally include notes, webpage_url, youtube_link, or other sources. Each card has a question, answer and hint.

create_flashcards input schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "description": "Text notes to include in content"
    },
    "title": {
      "type": "string",
      "description": "Title for standalone content generation (required when using sources)"
    },
    "unit_id": {
      "type": "string",
      "description": "Unit ID to generate content for (optional - use this OR provide sources)"
    },
    "course_id": {
      "type": "string",
      "description": "Course ID for unit completion tracking (optional - passed from course-syllabus widget)"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic - the more comprehensive, the better the output"
    },
    "description": {
      "type": "string",
      "description": "Description for standalone content generation"
    },
    "webpage_url": {
      "type": "string",
      "description": "Webpage URL to extract content from"
    },
    "youtube_link": {
      "type": "string",
      "description": "YouTube video URL as content source (video will be processed for learning content)"
    },
    "auto_research": {
      "type": "boolean",
      "description": "Auto-generate research content if no sources provided. Defaults to true when only title is given (no sources), false otherwise. Set explicitly to false to require manual sources."
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, etc.)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_flashcards annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
create_infographic — Create Infographic
Advertised by the server during the last successful anonymous check.

Generate an AI-powered educational infographic from either an existing unit (unit_id) or custom sources (title + notes/webpage/youtube/documents/images/audio/ai_research/ai_chat_context). Creates visual infographics with 17+ layout options (timeline, pyramid, flowchart, mindmap, etc.) and 12+ visual styles (flat design, kawaii, blueprint, cyberpunk, etc.). Supports both course-based (unit_id for learning roadmap) and standalone (sources for any topic) modes.

create_infographic input schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "description": "Text notes to include in content"
    },
    "title": {
      "type": "string",
      "description": "Title for standalone content generation (required when using sources)"
    },
    "layout": {
      "enum": [
        "horizontal_timeline",
        "vertical_timeline",
        "winding_roadmap",
        "pyramid",
        "concentric_circles",
        "tree_branching",
        "hub_and_spoke",
        "split_screen",
        "matrix",
        "venn_diagram",
        "iceberg",
        "funnel",
        "step_flow",
        "bridge",
        "story_mountain",
        "comic_strip",
        "jigsaw_puzzle",
        "isometric_map"
      ],
      "type": "string",
      "description": "Preferred layout type for the infographic (horizontal_timeline, vertical_timeline, winding_roadmap, pyramid, concentric_circles, tree_branching, hub_and_spoke, split_screen, matrix, venn_diagram, iceberg, funnel, step_flow, bridge, story_mountain, comic_strip, jigsaw_puzzle, isometric_map)"
    },
    "unit_id": {
      "type": "string",
      "description": "The unit ID to generate infographic for. The infographic will show a visual preview of the next 3 sections from this unit's position in the syllabus."
    },
    "language": {
      "type": "string",
      "default": "en",
      "description": "Language for the infographic content (default: en)"
    },
    "course_id": {
      "type": "string",
      "description": "Course ID for unit completion tracking (optional - passed from course-syllabus widget)"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic - the more comprehensive, the better the output"
    },
    "description": {
      "type": "string",
      "description": "Description for standalone content generation"
    },
    "webpage_url": {
      "type": "string",
      "description": "Webpage URL to extract content from"
    },
    "visual_style": {
      "enum": [
        "kawaii_vector",
        "claymation",
        "cartoon_storybook",
        "flat_design",
        "blueprint_schematic",
        "vintage_science",
        "watercolor",
        "paper_cutout",
        "pop_art",
        "cyberpunk_neon",
        "pixel_art",
        "chalkboard"
      ],
      "type": "string",
      "description": "Preferred visual style for the infographic (kawaii_vector, claymation, cartoon_storybook, flat_design, blueprint_schematic, vintage_science, watercolor, paper_cutout, pop_art, cyberpunk_neon, pixel_art, chalkboard)"
    },
    "youtube_link": {
      "type": "string",
      "description": "YouTube video URL as content source (video will be processed for learning content)"
    },
    "auto_research": {
      "type": "boolean",
      "description": "Auto-generate research content if no sources provided. Defaults to true when only title is given (no sources), false otherwise. Set explicitly to false to require manual sources."
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, etc.)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_infographic annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
create_match_pair — Create Match-Pairs Quiz
Advertised by the server during the last successful anonymous check.

Generate 10 AI-powered match-pair questions from either an existing unit (unit_id) or custom sources (title + notes/webpage/youtube/documents/images/audio/ai_research/ai_chat_context). Students match left items with corresponding right items (2 sets of 5 pairs each). Supports both course-based (unit_id) and standalone (sources) modes.

create_match_pair input schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "description": "Text notes to include in content"
    },
    "title": {
      "type": "string",
      "description": "Title for standalone content generation (required when using sources)"
    },
    "unit_id": {
      "type": "string",
      "description": "Unit ID to generate content for (optional - use this OR provide sources)"
    },
    "course_id": {
      "type": "string",
      "description": "Course ID for unit completion tracking (optional - passed from course-syllabus widget)"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic - the more comprehensive, the better the output"
    },
    "description": {
      "type": "string",
      "description": "Description for standalone content generation"
    },
    "webpage_url": {
      "type": "string",
      "description": "Webpage URL to extract content from"
    },
    "youtube_link": {
      "type": "string",
      "description": "YouTube video URL as content source (video will be processed for learning content)"
    },
    "auto_research": {
      "type": "boolean",
      "description": "Auto-generate research content if no sources provided. Defaults to true when only title is given (no sources), false otherwise. Set explicitly to false to require manual sources."
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, etc.)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_match_pair annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
create_mcq — Create Multiple-Choice Quiz
Advertised by the server during the last successful anonymous check.

Generate 5 multiple-choice questions. Use only when the user asks for multiple choice or MCQ; if they just ask for a quiz, use create_quiz so they can choose the format. Generates from an existing unit (unit_id) or from sources (title + notes/webpage/youtube/documents/images/audio/ai_research/ai_chat_context).

create_mcq input schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "description": "Text notes to include in content"
    },
    "title": {
      "type": "string",
      "description": "Title for standalone content generation (required when using sources)"
    },
    "unit_id": {
      "type": "string",
      "description": "Unit ID to generate content for (optional - use this OR provide sources)"
    },
    "course_id": {
      "type": "string",
      "description": "Course ID for unit completion tracking (optional - passed from course-syllabus widget)"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic - the more comprehensive, the better the output"
    },
    "description": {
      "type": "string",
      "description": "Description for standalone content generation"
    },
    "webpage_url": {
      "type": "string",
      "description": "Webpage URL to extract content from"
    },
    "youtube_link": {
      "type": "string",
      "description": "YouTube video URL as content source (video will be processed for learning content)"
    },
    "auto_research": {
      "type": "boolean",
      "description": "Auto-generate research content if no sources provided. Defaults to true when only title is given (no sources), false otherwise. Set explicitly to false to require manual sources."
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, etc.)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_mcq annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
create_quiz — Create Quiz
Advertised by the server during the last successful anonymous check.
Advertised read-only

Default quiz tool. Use when the user asks for a quiz or to be tested without naming a format. Shows a selector where the user picks the format: multiple choice, fill-in-the-blank, match pairs, ranking, crossword or flashcards. Use a format-specific tool (create_mcq, create_fill_blank, etc.) only when the user names that format.

create_quiz input schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "description": "Text notes to include in content"
    },
    "title": {
      "type": "string",
      "description": "Title for standalone content generation (required when using sources)"
    },
    "unit_id": {
      "type": "string",
      "description": "Unit ID to generate content for (optional - use this OR provide sources)"
    },
    "course_id": {
      "type": "string",
      "description": "Course ID for unit completion tracking (optional - passed from course-syllabus widget)"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic - the more comprehensive, the better the output"
    },
    "description": {
      "type": "string",
      "description": "Description for standalone content generation"
    },
    "webpage_url": {
      "type": "string",
      "description": "Webpage URL to extract content from"
    },
    "youtube_link": {
      "type": "string",
      "description": "YouTube video URL as content source (video will be processed for learning content)"
    },
    "auto_research": {
      "type": "boolean",
      "description": "Auto-generate research content if no sources provided. Defaults to true when only title is given (no sources), false otherwise. Set explicitly to false to require manual sources."
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, etc.)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_quiz annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_ranking — Create Ranking Quiz
Advertised by the server during the last successful anonymous check.

Generate 5 AI-powered ranking questions from either an existing unit (unit_id) or custom sources (title + notes/webpage/youtube/documents/images/audio/ai_research/ai_chat_context). Students order items by specific criteria (chronological, size, importance, etc.). Each question has 4-6 items to rank. Supports both course-based (unit_id) and standalone (sources) modes.

create_ranking input schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "description": "Text notes to include in content"
    },
    "title": {
      "type": "string",
      "description": "Title for standalone content generation (required when using sources)"
    },
    "unit_id": {
      "type": "string",
      "description": "Unit ID to generate content for (optional - use this OR provide sources)"
    },
    "course_id": {
      "type": "string",
      "description": "Course ID for unit completion tracking (optional - passed from course-syllabus widget)"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic - the more comprehensive, the better the output"
    },
    "description": {
      "type": "string",
      "description": "Description for standalone content generation"
    },
    "webpage_url": {
      "type": "string",
      "description": "Webpage URL to extract content from"
    },
    "youtube_link": {
      "type": "string",
      "description": "YouTube video URL as content source (video will be processed for learning content)"
    },
    "auto_research": {
      "type": "boolean",
      "description": "Auto-generate research content if no sources provided. Defaults to true when only title is given (no sources), false otherwise. Set explicitly to false to require manual sources."
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, etc.)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript"
    }
  },
  "additionalProperties": false
}
create_ranking annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
edit_crossword — Edit Crossword
Advertised by the server during the last successful anonymous check.
Advertised destructive

Edit existing crossword puzzle content (title, word-clue pairs, grid size, difficulty). Updates are saved to database and cache is invalidated. Free (no coin cost). Requires authentication and ownership.

edit_crossword input schema
{
  "type": "object",
  "required": [
    "puzzle_id"
  ],
  "properties": {
    "title": {
      "type": "string",
      "description": "Updated title"
    },
    "grid_size": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Updated grid size [width, height]"
    },
    "puzzle_id": {
      "type": "string",
      "description": "The crossword_id from create_crossword response (e.g., 'crossword_xxx_yyy'). MUST be from the actual response."
    },
    "difficulty": {
      "type": "string",
      "description": "Updated difficulty (easy/medium/hard)"
    },
    "word_clue_pairs": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Updated word-clue pairs"
    }
  },
  "additionalProperties": false
}
edit_crossword annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
edit_excalidraw — Edit Diagram
Advertised by the server during the last successful anonymous check.

Edit an existing Excalidraw diagram with natural language instructions. Modifies the diagram based on your instructions and regenerates. Requires diagram_id from a previous create_excalidraw response. Costs 15 coins.

edit_excalidraw input schema
{
  "type": "object",
  "required": [
    "diagram_id",
    "instructions"
  ],
  "properties": {
    "diagram_id": {
      "type": "string",
      "description": "The diagram_id from a previous create_excalidraw response. MUST be from the actual response."
    },
    "instructions": {
      "type": "string",
      "description": "Natural language instructions describing what to change (e.g. 'add more detail to the flowchart', 'change colors to blue theme')"
    }
  },
  "additionalProperties": false
}
edit_excalidraw annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
edit_fill_blank — Edit Fill-in-the-Blank Question
Advertised by the server during the last successful anonymous check.
Advertised destructive

Edit existing fill-blank question content. IMPORTANT: question_id MUST be the actual UUID from 'data.items[].id' in the create_fill_blank response - do NOT invent IDs. Updates saved to database. Free (no coin cost). Requires authentication and ownership.

edit_fill_blank input schema
{
  "type": "object",
  "required": [
    "question_id"
  ],
  "properties": {
    "hint": {
      "type": "string",
      "description": "Updated hint"
    },
    "answer": {
      "type": "string",
      "description": "Updated answer"
    },
    "context": {
      "type": "string",
      "description": "Updated context"
    },
    "difficulty": {
      "type": "string",
      "description": "Updated difficulty (easy/medium/hard)"
    },
    "explanation": {
      "type": "string",
      "description": "Updated explanation"
    },
    "question_id": {
      "type": "string",
      "description": "The UUID from 'data.items[].id' field in create_fill_blank response. Example: '98e4a8a8-1cb4-4030-9b1a-72c3ae033e13'. MUST be from the actual response, not invented."
    },
    "alternatives": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Updated alternative answers"
    },
    "question_text": {
      "type": "string",
      "description": "Updated question text"
    }
  },
  "additionalProperties": false
}
edit_fill_blank annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
edit_flashcards — Edit Flashcards
Advertised by the server during the last successful anonymous check.
Advertised destructive

Edit existing flashcard content (concept, question, answer, hint, visual hints, tags, image, difficulty). Updates are saved to database and cache is invalidated. Free (no coin cost). Requires authentication and ownership.

edit_flashcards input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "hint": {
      "type": "string",
      "description": "Updated hint"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Updated tags"
    },
    "answer": {
      "type": "string",
      "description": "Updated answer"
    },
    "set_id": {
      "type": "string",
      "description": "The flashcard_set_id from create_flashcards response (e.g., 'cache_xxx_yyy') (mode 2). Requires sequence parameter."
    },
    "concept": {
      "type": "string",
      "description": "Updated concept"
    },
    "question": {
      "type": "string",
      "description": "Updated question"
    },
    "sequence": {
      "type": "integer",
      "description": "Card number within set (1-based). Requires set_id parameter."
    },
    "image_url": {
      "type": "string",
      "description": "Updated image URL"
    },
    "difficulty": {
      "type": "integer",
      "description": "Updated difficulty (1-5)"
    },
    "flashcard_id": {
      "type": "string",
      "description": "UUID from 'data.items[].id' in create_flashcards response (mode 1). Use this OR set_id+sequence, not both. MUST be from actual response."
    },
    "visual_hints": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Updated visual hints"
    }
  },
  "additionalProperties": false
}
edit_flashcards annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
edit_infographic — Edit Infographic
Advertised by the server during the last successful anonymous check.
Advertised destructive

Edit existing infographic content (title, description, layout, visual style, elements). Updates are saved to database and cache is invalidated. Free (no coin cost). Requires authentication and ownership.

edit_infographic input schema
{
  "type": "object",
  "required": [
    "infographic_id"
  ],
  "properties": {
    "title": {
      "type": "string",
      "description": "Updated title for the infographic"
    },
    "layout": {
      "enum": [
        "horizontal_timeline",
        "vertical_timeline",
        "winding_roadmap",
        "pyramid",
        "concentric_circles",
        "tree_branching",
        "hub_and_spoke",
        "split_screen",
        "matrix",
        "venn_diagram",
        "iceberg",
        "funnel",
        "step_flow",
        "bridge",
        "story_mountain",
        "comic_strip",
        "jigsaw_puzzle",
        "isometric_map"
      ],
      "type": "string",
      "description": "Updated layout type (horizontal_timeline, vertical_timeline, winding_roadmap, pyramid, concentric_circles, tree_branching, hub_and_spoke, split_screen, matrix, venn_diagram, iceberg, funnel, step_flow, bridge, story_mountain, comic_strip, jigsaw_puzzle, isometric_map)"
    },
    "elements": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "color": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "section_number": {
            "type": "integer"
          },
          "icon_suggestion": {
            "type": "string"
          }
        }
      },
      "description": "Updated elements array with section_number, label, content, position, color, and icon_suggestion"
    },
    "description": {
      "type": "string",
      "description": "Updated description for the infographic"
    },
    "visual_style": {
      "enum": [
        "kawaii_vector",
        "claymation",
        "cartoon_storybook",
        "flat_design",
        "blueprint_schematic",
        "vintage_science",
        "watercolor",
        "paper_cutout",
        "pop_art",
        "cyberpunk_neon",
        "pixel_art",
        "chalkboard"
      ],
      "type": "string",
      "description": "Updated visual style (kawaii_vector, claymation, cartoon_storybook, flat_design, blueprint_schematic, vintage_science, watercolor, paper_cutout, pop_art, cyberpunk_neon, pixel_art, chalkboard)"
    },
    "infographic_id": {
      "type": "string",
      "description": "The infographic ID to edit (format: infographic_{userID}_{unitID})"
    }
  }
}
edit_infographic annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
edit_match_pair — Edit Match-Pairs Question
Advertised by the server during the last successful anonymous check.
Advertised destructive

Edit existing match-pair question content (left item, right item, hint, explanation, difficulty, pair set). Updates are saved to database and cache is invalidated. Free (no coin cost). Requires authentication and ownership.

edit_match_pair input schema
{
  "type": "object",
  "required": [
    "pair_id"
  ],
  "properties": {
    "hint": {
      "type": "string",
      "description": "Updated hint"
    },
    "pair_id": {
      "type": "string",
      "description": "The UUID from 'data.items[].id' field in create_match_pair response. MUST be from the actual response, not invented."
    },
    "pair_set": {
      "type": "integer",
      "description": "Updated pair set number"
    },
    "left_item": {
      "type": "string",
      "description": "Updated left item"
    },
    "difficulty": {
      "type": "integer",
      "description": "Updated difficulty (1-5)"
    },
    "right_item": {
      "type": "string",
      "description": "Updated right item"
    },
    "explanation": {
      "type": "string",
      "description": "Updated explanation"
    }
  },
  "additionalProperties": false
}
edit_match_pair annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
edit_mcq — Edit Multiple-Choice Question
Advertised by the server during the last successful anonymous check.
Advertised destructive

Edit existing MCQ question content (question text, options, correct answer, explanation, difficulty). Updates are saved to database and cache is invalidated. Free (no coin cost). Requires authentication and ownership.

edit_mcq input schema
{
  "type": "object",
  "required": [
    "question_id"
  ],
  "properties": {
    "options": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Updated options"
    },
    "difficulty": {
      "type": "string",
      "description": "Updated difficulty (easy/medium/hard)"
    },
    "explanation": {
      "type": "string",
      "description": "Updated explanation"
    },
    "question_id": {
      "type": "string",
      "description": "The UUID from 'data.items[].id' field in create_mcq response. MUST be from the actual response, not invented."
    },
    "question_text": {
      "type": "string",
      "description": "Updated question text"
    },
    "correct_answer": {
      "type": "string",
      "description": "Updated correct answer"
    }
  },
  "additionalProperties": false
}
edit_mcq annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
edit_quiz — Edit Quiz
Advertised by the server during the last successful anonymous check.
Advertised destructive

Edit existing quiz content (title, config, sections, passing score, time limit). Updates are saved to database and cache is invalidated. Free (no coin cost). Requires authentication and ownership.

edit_quiz input schema
{
  "type": "object",
  "required": [
    "quiz_id"
  ],
  "properties": {
    "title": {
      "type": "string",
      "description": "Updated quiz title"
    },
    "config": {
      "type": "object",
      "description": "Updated quiz configuration"
    },
    "quiz_id": {
      "type": "string",
      "description": "Quiz ID (UUID) to edit"
    },
    "sections": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "Quiz section with questions"
      },
      "description": "Updated quiz sections"
    },
    "passing_score": {
      "type": "integer",
      "maximum": 100,
      "minimum": 0,
      "description": "Updated passing score (0-100)"
    },
    "time_limit_minutes": {
      "type": "integer",
      "minimum": 1,
      "description": "Updated time limit in minutes"
    }
  }
}
edit_quiz annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
edit_ranking — Edit Ranking Question
Advertised by the server during the last successful anonymous check.
Advertised destructive

Edit existing ranking question content (question text, items, order type, hint, explanation, difficulty). Updates are saved to database and cache is invalidated. Free (no coin cost). Requires authentication and ownership.

edit_ranking input schema
{
  "type": "object",
  "required": [
    "question_id"
  ],
  "properties": {
    "hint": {
      "type": "string",
      "description": "Updated hint"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Updated items to rank"
    },
    "difficulty": {
      "type": "integer",
      "description": "Updated difficulty (1-5)"
    },
    "order_type": {
      "type": "string",
      "description": "Updated order type (ascending/descending)"
    },
    "explanation": {
      "type": "string",
      "description": "Updated explanation"
    },
    "question_id": {
      "type": "string",
      "description": "The UUID from 'data.items[].id' field in create_ranking response. MUST be from the actual response, not invented."
    },
    "question_text": {
      "type": "string",
      "description": "Updated question text"
    }
  },
  "additionalProperties": false
}
edit_ranking annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
my_courses — My Courses
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get courses you've enrolled in, bookmarked/favourited, or explore community courses. Returns paginated results with progress tracking and metadata. Supports types: 'enrolled' (your enrolled courses), 'favourites' (bookmarked courses), 'community' (public courses). FREE call that does NOT count against rate limits.

my_courses input schema
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string"
    },
    "limit": {
      "type": "integer"
    }
  },
  "additionalProperties": false
}
my_courses annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_flashcard_settings — My Flashcard Settings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get your flashcard generation preferences including language, cards per unit range (min/max), preferred card styles, and image theme. Returns current settings or 404 if not initialized. FREE (no coin cost). Requires authentication.

my_flashcard_settings input schema
{
  "type": "object",
  "additionalProperties": false
}
my_flashcard_settings annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_learning_diary — My Learning Diary
Advertised by the server during the last successful anonymous check.
Advertised read-only

View your personal learning diary calendar. Shows all your activity including logins, learning sessions, achievements, coin transactions, and more. Displays a monthly calendar view with event icons and detailed information when clicking on days. Free (no coin cost).

my_learning_diary input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "year": {
      "type": "integer",
      "description": "Year to view (e.g., 2025). Defaults to current year."
    },
    "month": {
      "type": "integer",
      "description": "Month to view (1-12). Defaults to current month."
    }
  },
  "additionalProperties": false
}
my_learning_diary annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_podcast_settings — My Podcast Settings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get your podcast generation preferences including language, accent (US/UK/AU), number of tutors (1-2), podcast length range (min/max minutes), and speaking styles. Returns current settings or 404 if not initialized. FREE (no coin cost). Requires authentication.

my_podcast_settings input schema
{
  "type": "object",
  "additionalProperties": false
}
my_podcast_settings annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_profile — My Profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get current authenticated user information including profile, subscription status, coins, XP, and groups. Works for both authenticated users and anonymous/freemium users. This is a FREE call that does NOT count against rate limits.

my_profile input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
my_profile annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_quiz_settings — My Quiz Settings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get your quiz generation preferences including language, questions per unit range (min/max), time limit, difficulty level (easy/medium/hard/adaptive/mixed), question types, and passing score. Returns current settings or 404 if not initialized. FREE (no coin cost). Requires authentication.

my_quiz_settings input schema
{
  "type": "object",
  "additionalProperties": false
}
my_quiz_settings annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
play_chess — Play Chess
Advertised by the server during the last successful anonymous check.
Advertised read-only

Start a chess game against an AI opponent as a study break. Options: difficulty (beginner 800, intermediate 1200, advanced 1600, master 2000 Elo), player_color (white/black/random), time_control (blitz/rapid/classical/unlimited), opening_query (optional, e.g. 'sicilian dragon', 'italian game') with variation (optional). Includes move validation, opening descriptions and post-game analysis.

play_chess input schema
{
  "type": "object",
  "properties": {
    "variation": {
      "type": "string",
      "description": "Specific variation of the opening (optional)"
    },
    "difficulty": {
      "enum": [
        "beginner",
        "intermediate",
        "advanced",
        "master"
      ],
      "type": "string",
      "description": "AI difficulty level: beginner (800 ELO), intermediate (1200 ELO), advanced (1600 ELO), master (2000 ELO)"
    },
    "player_color": {
      "enum": [
        "white",
        "black",
        "random"
      ],
      "type": "string",
      "description": "Player's color choice (white, black, random)"
    },
    "time_control": {
      "enum": [
        "blitz",
        "rapid",
        "classical",
        "unlimited"
      ],
      "type": "string",
      "description": "Time control format (blitz, rapid, classical, unlimited)"
    },
    "opening_query": {
      "type": "string",
      "description": "Natural language opening query (e.g., 'spanish defence', 'sicilian dragon')"
    }
  },
  "additionalProperties": false
}
play_chess annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
play_memory_game — Play Memory Game
Advertised by the server during the last successful anonymous check.
Advertised read-only

Start a memory card-matching game as a study break. Options: grid size (4x4, 6x6, 8x8) and theme. Tracks moves, time and best score.

play_memory_game input schema
{
  "type": "object",
  "properties": {
    "difficulty": {
      "enum": [
        "easy",
        "medium",
        "hard"
      ],
      "type": "string",
      "description": "Game difficulty level (easy, medium, hard)"
    }
  },
  "additionalProperties": false
}
play_memory_game annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
play_snake — Play Snake
Advertised by the server during the last successful anonymous check.
Advertised read-only

Start a game of Snake as a short study break. The snake grows as it collects food and speeds up as the score rises. Options: difficulty (easy/medium/hard), game_mode (classic/timed), grid_size (10-30), speed (1-10). Runs entirely in the widget; no content is generated.

play_snake input schema
{
  "type": "object",
  "properties": {
    "speed": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Initial snake speed (1-10, default 5)"
    },
    "game_mode": {
      "enum": [
        "classic",
        "timed"
      ],
      "type": "string",
      "description": "Game mode (classic, timed)"
    },
    "grid_size": {
      "type": "integer",
      "maximum": 30,
      "minimum": 10,
      "description": "Grid size (10-30, default 20)"
    },
    "difficulty": {
      "enum": [
        "easy",
        "medium",
        "hard"
      ],
      "type": "string",
      "description": "Game difficulty level (easy, medium, hard)"
    }
  },
  "additionalProperties": false
}
play_snake annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
remove_liked_course — Unbookmark Course
Advertised by the server during the last successful anonymous check.
Advertised destructive

Remove a course from your favorites/bookmarks. Requires authentication. FREE call that does NOT count against rate limits. Idempotent - safe to call even if course is not in favorites.

remove_liked_course input schema
{
  "type": "object",
  "required": [
    "course_id"
  ],
  "properties": {
    "course_id": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
remove_liked_course annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
show_leaderboard — View Leaderboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

View competitive rankings and see how you compare to other learners. Filter by time range (daily/weekly/monthly/all-time) and optionally by specific course. Shows top performers (podium), your position highlighted, and detailed statistics. Use auto_page=true to automatically show the page containing your rank. FREE call that does NOT count against rate limits.

show_leaderboard input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number (1-indexed). Default: 1"
    },
    "limit": {
      "type": "integer",
      "description": "Number of entries per page (default: 10, max: 50)"
    },
    "auto_page": {
      "type": "boolean",
      "description": "Auto-navigate to the page containing your rank. When true, ignores page parameter and shows your position."
    },
    "course_id": {
      "type": "string",
      "description": "Optional course ID to filter leaderboard by specific course"
    },
    "time_range": {
      "enum": [
        "daily",
        "weekly",
        "monthly",
        "all-time"
      ],
      "type": "string",
      "description": "Time range filter: daily, weekly, monthly, or all-time"
    }
  }
}
show_leaderboard annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
study_concept — Study Concept
Advertised by the server during the last successful anonymous check.

Create an interactive study course on a topic or from the user's sources (notes, URLs, PDFs, YouTube, images, audio). Use when the user wants to study a topic, prepare for a test, exam or interview, understand a concept, or make a study guide. The course includes structured units with quizzes and flashcards. Pass course_id to open an existing course instead.

study_concept input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "tags": {
      "type": "object",
      "description": "Optional key-value pairs for course categorization"
    },
    "level": {
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ],
      "type": "string",
      "description": "Difficulty level: beginner, intermediate, or advanced"
    },
    "notes": {
      "type": "string",
      "description": "Text notes to include in course content"
    },
    "topic": {
      "type": "string",
      "description": "Course topic or name (required if course_id not provided)"
    },
    "course_id": {
      "type": "string",
      "description": "Optional course ID to retrieve an existing course. If provided, retrieves the course instead of generating a new one."
    },
    "is_public": {
      "type": "boolean",
      "default": false,
      "description": "Whether course should be publicly accessible"
    },
    "audio_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Audio URLs (MP3, WAV)"
    },
    "image_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Image URLs (JPEG, PNG, WEBP, GIF)"
    },
    "ai_research": {
      "type": "string",
      "description": "AI-generated research content based on the topic (will be merged into Notes)"
    },
    "webpage_url": {
      "type": "string",
      "description": "Single webpage URL to extract content from"
    },
    "youtube_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "YouTube video URLs to transcribe"
    },
    "document_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Document URLs (PDF, DOCX, TXT, MD, CSV, HTML, RTF)"
    },
    "ai_chat_context": {
      "type": "string",
      "description": "Short summary of the points from this chat the user wants covered, not a transcript (merged into Notes)"
    }
  }
}
study_concept annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

90 advertised

QuizLink Mission

Advertised by the server during the last successful anonymous check.

QuizLink's mission and founding story

QuizLink Mission URI
brand://mission

MIME type: application/json

QuizLink Philosophy

Advertised by the server during the last successful anonymous check.

QuizLink's learning philosophy and principles

QuizLink Philosophy URI
brand://philosophy

MIME type: application/json

Server Capabilities

Advertised by the server during the last successful anonymous check.

List of server features and capabilities

Server Capabilities URI
config://capabilities

MIME type: application/json

Server Information

Advertised by the server during the last successful anonymous check.

Platform name, description, and capabilities

Server Information URI
config://info

MIME type: application/json

Server Version

Advertised by the server during the last successful anonymous check.

Current version and build information

Server Version URI
config://version

MIME type: application/json

Authentication Guide

Advertised by the server during the last successful anonymous check.

How to authenticate with QuizLink MCP server

Authentication Guide URI
docs://authentication

MIME type: application/json

Platform Features

Advertised by the server during the last successful anonymous check.

Comprehensive list of platform features

Platform Features URI
docs://features

MIME type: application/json

Learning Types Guide

Advertised by the server during the last successful anonymous check.

Comprehensive guide to 8 gamified learning types

Learning Types Guide URI
docs://learning-types

MIME type: application/json

Coin Costs

Advertised by the server during the last successful anonymous check.

Typical coin cost of QuizLink learning activities

Coin Costs URI
docs://pricing

MIME type: application/json

Platform Use Cases

Advertised by the server during the last successful anonymous check.

Target audiences and use cases

Platform Use Cases URI
docs://use-cases

MIME type: application/json

Tool Usage Examples

Advertised by the server during the last successful anonymous check.

Step-by-step examples for using MCP tools

Tool Usage Examples URI
examples://tool-usage

MIME type: application/json

2048 Game Widget

Advertised by the server during the last successful anonymous check.

Number merging puzzle game

2048 Game Widget URI
https://mcp-components.quizlink.net/widgets/2048-game.html

MIME type: text/html

Breakout Game Widget

Advertised by the server during the last successful anonymous check.

Brick breaker game with power-ups

Breakout Game Widget URI
https://mcp-components.quizlink.net/widgets/breakout-game.html

MIME type: text/html

Chess Game Widget

Advertised by the server during the last successful anonymous check.

Interactive chess with AI opponent

Chess Game Widget URI
https://mcp-components.quizlink.net/widgets/chess-game.html

MIME type: text/html

Code Playground Widget

Advertised by the server during the last successful anonymous check.

Interactive coding challenges

Code Playground Widget URI
https://mcp-components.quizlink.net/widgets/code-playground.html

MIME type: text/html

Course Syllabus Widget

Advertised by the server during the last successful anonymous check.

Interactive course learning path

Course Syllabus Widget URI
https://mcp-components.quizlink.net/widgets/course-syllabus.html

MIME type: text/html

Courses List Widget

Advertised by the server during the last successful anonymous check.

List of available courses

Courses List Widget URI
https://mcp-components.quizlink.net/widgets/courses-list.html

MIME type: text/html

Crossword Puzzle Widget

Advertised by the server during the last successful anonymous check.

Interactive crossword puzzle

Crossword Puzzle Widget URI
https://mcp-components.quizlink.net/widgets/crossword-puzzle.html

MIME type: text/html

Educational Shop Widget

Advertised by the server during the last successful anonymous check.

Educational materials marketplace

Educational Shop Widget URI
https://mcp-components.quizlink.net/widgets/edu-shop.html

MIME type: text/html

Excalidraw Viewer Widget

Advertised by the server during the last successful anonymous check.

Interactive diagram viewer with stage playback

Excalidraw Viewer Widget URI
https://mcp-components.quizlink.net/widgets/excalidraw-viewer.html

MIME type: text/html

Fill-in-the-Blank Widget

Advertised by the server during the last successful anonymous check.

Interactive fill-in-the-blank quiz

Fill-in-the-Blank Widget URI
https://mcp-components.quizlink.net/widgets/fill-blank-quiz.html

MIME type: text/html

Flashcard Carousel Widget

Advertised by the server during the last successful anonymous check.

Interactive flashcard carousel

Flashcard Carousel Widget URI
https://mcp-components.quizlink.net/widgets/flashcard-carousel.html

MIME type: text/html

Flashcard Settings Widget

Advertised by the server during the last successful anonymous check.

Flashcard preferences panel

Flashcard Settings Widget URI
https://mcp-components.quizlink.net/widgets/flashcard-settings.html

MIME type: text/html

Geography Quiz Widget

Advertised by the server during the last successful anonymous check.

Interactive geography quiz

Geography Quiz Widget URI
https://mcp-components.quizlink.net/widgets/geography-quiz-game.html

MIME type: text/html

Harada Grid Widget

Advertised by the server during the last successful anonymous check.

64-cell goal planning grid

Harada Grid Widget URI
https://mcp-components.quizlink.net/widgets/harada-grid.html

MIME type: text/html

Leaderboard Widget

Advertised by the server during the last successful anonymous check.

Top performers and rankings

Leaderboard Widget URI
https://mcp-components.quizlink.net/widgets/leaderboard.html

MIME type: text/html

Match Pair Widget

Advertised by the server during the last successful anonymous check.

Matching pairs game

Match Pair Widget URI
https://mcp-components.quizlink.net/widgets/match-pair-game.html

MIME type: text/html

Math Blaster Widget

Advertised by the server during the last successful anonymous check.

Arcade-style math practice

Math Blaster Widget URI
https://mcp-components.quizlink.net/widgets/math-blaster-game.html

MIME type: text/html

MCQ Quiz Widget

Advertised by the server during the last successful anonymous check.

Multiple choice quiz

MCQ Quiz Widget URI
https://mcp-components.quizlink.net/widgets/mcq-quiz.html

MIME type: text/html

Memory Game Widget

Advertised by the server during the last successful anonymous check.

Card matching game

Memory Game Widget URI
https://mcp-components.quizlink.net/widgets/memory-game.html

MIME type: text/html

Mindmap Explorer Widget

Advertised by the server during the last successful anonymous check.

Deep-dive topic exploration

Mindmap Explorer Widget URI
https://mcp-components.quizlink.net/widgets/mindmap-explorer.html

MIME type: text/html

Minesweeper Widget

Advertised by the server during the last successful anonymous check.

Mine detection logic game

Minesweeper Widget URI
https://mcp-components.quizlink.net/widgets/minesweeper-game.html

MIME type: text/html

User Profile Widget

Advertised by the server during the last successful anonymous check.

User profile display

User Profile Widget URI
https://mcp-components.quizlink.net/widgets/my_profile.html

MIME type: text/html

Onboarding Widget

Advertised by the server during the last successful anonymous check.

Interactive onboarding flow

Onboarding Widget URI
https://mcp-components.quizlink.net/widgets/onboarding-carousel.html

MIME type: text/html

Pac-Man Widget

Advertised by the server during the last successful anonymous check.

Classic arcade maze game

Pac-Man Widget URI
https://mcp-components.quizlink.net/widgets/pacman-game.html

MIME type: text/html

Periodic Table Widget

Advertised by the server during the last successful anonymous check.

Chemistry learning game

Periodic Table Widget URI
https://mcp-components.quizlink.net/widgets/periodic-table-game.html

MIME type: text/html

Podcast Player Widget

Advertised by the server during the last successful anonymous check.

Audio player with transcript

Podcast Player Widget URI
https://mcp-components.quizlink.net/widgets/podcast-player.html

MIME type: text/html

Podcast Settings Widget

Advertised by the server during the last successful anonymous check.

Podcast preferences panel

Podcast Settings Widget URI
https://mcp-components.quizlink.net/widgets/podcast-settings.html

MIME type: text/html

Pong Widget

Advertised by the server during the last successful anonymous check.

Classic arcade tennis game

Pong Widget URI
https://mcp-components.quizlink.net/widgets/pong-game.html

MIME type: text/html

Progress Overview Widget

Advertised by the server during the last successful anonymous check.

User progress dashboard

Progress Overview Widget URI
https://mcp-components.quizlink.net/widgets/progress-overview.html

MIME type: text/html

Quiz Settings Widget

Advertised by the server during the last successful anonymous check.

Quiz preferences panel

Quiz Settings Widget URI
https://mcp-components.quizlink.net/widgets/quiz-settings.html

MIME type: text/html

Ranking Game Widget

Advertised by the server during the last successful anonymous check.

Order items by sequence

Ranking Game Widget URI
https://mcp-components.quizlink.net/widgets/ranking-game.html

MIME type: text/html

Ranking Progress Widget

Advertised by the server during the last successful anonymous check.

Progress and achievements dashboard

Ranking Progress Widget URI
https://mcp-components.quizlink.net/widgets/ranking-progress-dashboard.html

MIME type: text/html

Settings Overview Widget

Advertised by the server during the last successful anonymous check.

Account preferences panel

Settings Overview Widget URI
https://mcp-components.quizlink.net/widgets/settings-overview.html

MIME type: text/html

Simon Game Widget

Advertised by the server during the last successful anonymous check.

Pattern memory game

Simon Game Widget URI
https://mcp-components.quizlink.net/widgets/simon-game.html

MIME type: text/html

Snake Game Widget

Advertised by the server during the last successful anonymous check.

Classic snake game

Snake Game Widget URI
https://mcp-components.quizlink.net/widgets/snake-game.html

MIME type: text/html

Space Invaders Widget

Advertised by the server during the last successful anonymous check.

Retro alien shooter game

Space Invaders Widget URI
https://mcp-components.quizlink.net/widgets/space-invaders-game.html

MIME type: text/html

Subscription Plans Widget

Advertised by the server during the last successful anonymous check.

Pricing tiers comparison

Subscription Plans Widget URI
https://mcp-components.quizlink.net/widgets/subscription-plans.html

MIME type: text/html

Sudoku Widget

Advertised by the server during the last successful anonymous check.

Logic puzzle game

Sudoku Widget URI
https://mcp-components.quizlink.net/widgets/sudoku-game.html

MIME type: text/html

Tetris Widget

Advertised by the server during the last successful anonymous check.

Falling blocks puzzle game

Tetris Widget URI
https://mcp-components.quizlink.net/widgets/tetris-game.html

MIME type: text/html

Typing Test Widget

Advertised by the server during the last successful anonymous check.

WPM testing tool

Typing Test Widget URI
https://mcp-components.quizlink.net/widgets/typing-test.html

MIME type: text/html

Video Ad Player Widget

Advertised by the server during the last successful anonymous check.

Watch ads for coins

Video Ad Player Widget URI
https://mcp-components.quizlink.net/widgets/video-ad-player.html

MIME type: text/html

Word Search Widget

Advertised by the server during the last successful anonymous check.

Word finding puzzle

Word Search Widget URI
https://mcp-components.quizlink.net/widgets/word-search-game.html

MIME type: text/html

Accessibility Commitment

Advertised by the server during the last successful anonymous check.

QuizLink's commitment to educational accessibility

Accessibility Commitment URI
impact://accessibility

MIME type: application/json

NCLB Vision

Advertised by the server during the last successful anonymous check.

How QuizLink fulfills the No Child Left Behind vision

NCLB Vision URI
impact://nclb-vision

MIME type: application/json

Learning Hierarchy

Advertised by the server during the last successful anonymous check.

QuizLink's course structure based on cognitive science

Learning Hierarchy URI
science://learning-hierarchy

MIME type: application/json

Retention Methods

Advertised by the server during the last successful anonymous check.

Science-backed methods QuizLink uses for better retention

Retention Methods URI
science://retention-methods

MIME type: application/json

Founder Information

Advertised by the server during the last successful anonymous check.

Information about QuizLink's founder Paul Negedu

Founder Information URI
team://founder

MIME type: application/json

JIT Learning Approach

Advertised by the server during the last successful anonymous check.

QuizLink's Just-In-Time learning approach

JIT Learning Approach URI
tech://jit-learning

MIME type: application/json

Multimodal AI Approach

Advertised by the server during the last successful anonymous check.

QuizLink's multimodal AI approach - the Swiss Army knife for learning

Multimodal AI Approach URI
tech://multimodal-approach

MIME type: application/json

Animation Viewer Widget

Advertised by the server during the last successful anonymous check.

Animated concept explainer video player

Animation Viewer Widget URI
ui://widget/animation-viewer.html

MIME type: text/html

Chess Game Widget

Advertised by the server during the last successful anonymous check.

Interactive chess with AI opponent

Chess Game Widget URI
ui://widget/chess-game.html

MIME type: text/html

Course Syllabus Widget

Advertised by the server during the last successful anonymous check.

Interactive course learning path

Course Syllabus Widget URI
ui://widget/course-syllabus.html

MIME type: text/html

Courses List Widget

Advertised by the server during the last successful anonymous check.

List of available courses

Courses List Widget URI
ui://widget/courses-list.html

MIME type: text/html

Crossword Puzzle Widget

Advertised by the server during the last successful anonymous check.

Interactive crossword puzzle

Crossword Puzzle Widget URI
ui://widget/crossword-puzzle.html

MIME type: text/html

Excalidraw Viewer Widget

Advertised by the server during the last successful anonymous check.

Interactive diagram viewer with stage playback

Excalidraw Viewer Widget URI
ui://widget/excalidraw-viewer.html

MIME type: text/html

Fill-in-the-Blank Widget

Advertised by the server during the last successful anonymous check.

Interactive fill-in-the-blank quiz

Fill-in-the-Blank Widget URI
ui://widget/fill-blank-quiz.html

MIME type: text/html

Flashcard Carousel Widget

Advertised by the server during the last successful anonymous check.

Interactive flashcard study tool

Flashcard Carousel Widget URI
ui://widget/flashcard-carousel.html

MIME type: text/html

Flashcard Settings Widget

Advertised by the server during the last successful anonymous check.

Flashcard preferences panel

Flashcard Settings Widget URI
ui://widget/flashcard-settings.html

MIME type: text/html

Harada Grid Widget

Advertised by the server during the last successful anonymous check.

64-cell goal planning grid

Harada Grid Widget URI
ui://widget/harada-grid.html

MIME type: text/html

Infographic Viewer Widget

Advertised by the server during the last successful anonymous check.

Learning roadmap infographic visualization

Infographic Viewer Widget URI
ui://widget/infographic-viewer.html

MIME type: text/html

Leaderboard Widget

Advertised by the server during the last successful anonymous check.

Top performers and rankings

Leaderboard Widget URI
ui://widget/leaderboard.html

MIME type: text/html

Match Pair Widget

Advertised by the server during the last successful anonymous check.

Matching pairs game

Match Pair Widget URI
ui://widget/match-pair-game.html

MIME type: text/html

MCQ Quiz Widget

Advertised by the server during the last successful anonymous check.

Multiple choice quiz

MCQ Quiz Widget URI
ui://widget/mcq-quiz.html

MIME type: text/html

Memory Card Game Widget

Advertised by the server during the last successful anonymous check.

Card matching game with multiple themes and 3D flip animations

Memory Card Game Widget URI
ui://widget/memory-game.html

MIME type: text/html

Mindmap Explorer Widget

Advertised by the server during the last successful anonymous check.

Deep-dive topic exploration

Mindmap Explorer Widget URI
ui://widget/mindmap-explorer.html

MIME type: text/html

User Profile Widget

Advertised by the server during the last successful anonymous check.

Interactive user profile and account information display

User Profile Widget URI
ui://widget/my_profile.html

MIME type: text/html

Onboarding Carousel Widget

Advertised by the server during the last successful anonymous check.

Interactive onboarding flow with 7-slide carousel showcasing features and collecting user preferences

Onboarding Carousel Widget URI
ui://widget/onboarding-carousel.html

MIME type: text/html

Pac-Man Game Widget

Advertised by the server during the last successful anonymous check.

Classic arcade maze game

Pac-Man Game Widget URI
ui://widget/pacman-game.html

MIME type: text/html

Podcast Player Widget

Advertised by the server during the last successful anonymous check.

Audio player with transcript

Podcast Player Widget URI
ui://widget/podcast-player.html

MIME type: text/html

Podcast Settings Widget

Advertised by the server during the last successful anonymous check.

Podcast preferences panel

Podcast Settings Widget URI
ui://widget/podcast-settings.html

MIME type: text/html

Progress Calendar Widget

Advertised by the server during the last successful anonymous check.

Learning diary calendar showing daily study progress and streak visualization

Progress Calendar Widget URI
ui://widget/progress-calendar.html

MIME type: text/html

Quiz Selector Widget

Advertised by the server during the last successful anonymous check.

Interactive quiz type selector

Quiz Selector Widget URI
ui://widget/quiz-selector.html

MIME type: text/html

Quiz Settings Widget

Advertised by the server during the last successful anonymous check.

Quiz preferences panel

Quiz Settings Widget URI
ui://widget/quiz-settings.html

MIME type: text/html

Ranking Game Widget

Advertised by the server during the last successful anonymous check.

Order items by sequence

Ranking Game Widget URI
ui://widget/ranking-game.html

MIME type: text/html

Snake Game Widget

Advertised by the server during the last successful anonymous check.

Classic snake game

Snake Game Widget URI
ui://widget/snake-game.html

MIME type: text/html

Study Mode Widget

Advertised by the server during the last successful anonymous check.

Interactive study shell for course-based learning activities

Study Mode Widget URI
ui://widget/study-mode.html

MIME type: text/html

Subscription Plans Widget

Advertised by the server during the last successful anonymous check.

Pricing tiers comparison

Subscription Plans Widget URI
ui://widget/subscription-plans.html

MIME type: text/html

Teacher Booking Widget

Advertised by the server during the last successful anonymous check.

Book tutoring sessions with teachers

Teacher Booking Widget URI
ui://widget/teacher-booking.html

MIME type: text/html

Video Ad Player Widget

Advertised by the server during the last successful anonymous check.

Watch ads to earn coins

Video Ad Player Widget URI
ui://widget/video-ad-player.html

MIME type: text/html

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
632 ms
95th percentile latency
632 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 632 ms · metadata changed · 36 tool(s), 90 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http quizlink-mcp https://mcp.quizlink.net/stream

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add quizlink-mcp --url https://mcp.quizlink.net/stream

Cursor

Merge this server into .cursor/mcp.json in your project, then enable quizlink-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "quizlink-mcp": {
      "url": "https://mcp.quizlink.net/stream"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "quizlink-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.quizlink.net/stream",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start quizlink-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "quizlink-mcp": {
      "type": "http",
      "url": "https://mcp.quizlink.net/stream"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http quizlink-mcp https://mcp.quizlink.net/stream

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "quizlink-mcp": {
      "url": "https://mcp.quizlink.net/stream"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "quizlink-mcp": {
      "serverUrl": "https://mcp.quizlink.net/stream"
    }
  }
}

Let your agent find its tools

Find servers like QuizLink MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run QuizLink MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing