Playwright MCP Server
com.riddle/creatorBuild, publish and analyze quizzes, polls, forms and personality tests. Riddle account required.
Score: 100/100
Handshake verified by our own probe.
Tools · 48
Creates a single-use link for uploading ONE media file into the media library. Call it when the user has a LOCAL file for a Riddle: this server cannot receive bytes, so the upload is yours. A link exp…
Deletes a file from the media library permanently, to clean up after yourself: an upload that turned out wrong, or a file the user no longer wants stored (it frees the storage it counted against). The…
Stores an existing Riddle as a template of its project (or of the user, for a personal Riddle), so new Riddles can be created from it with riddle_template_use. The template is a copy taken at this mom…
Changes a template's title and/or its gallery image and icon. Images: media_upload_link into the template's project, pass the reported "mediaId" (stored by URL - deleting the file breaks the image). O…
Lists the templates of a project (or your personal ones) - the ones made from your own Riddles with riddle_template_create, NOT Riddle's public ones, which riddle_template_public_list returns. Quick-c…
Lists Riddle's public templates - the ready-made ones every account has, as opposed to riddle_template_list's own ones. They are grouped by category (the tag the Creator sorts them by), so calling thi…
Reads one template, by default INCLUDING its build configuration - the same "build" shape riddle_get returns and riddle_builder_create accepts. This is how a template is ADAPTED rather than copied: ed…
Creates a new Riddle from a template as an unchanged copy of it - content, settings and design preset - recorded as a copy of the template's Riddle (riddle_get reports it as context.duplicated). Use t…
Lists the tags of a project as {items: [{id, name, count, bankCount}]}, unpaginated - the labels the Creator shows and riddle_list's "tags" filter selects by, and where the ids that filter takes come …
Puts a tag on Riddles - ONE assignment per Riddle, never the tag itself (riddle_tag_list reads the labels of a project, riddle_tag_remove takes a tag off again, riddle_tag_delete removes a label). Giv…
Takes a tag off Riddles - ONE assignment per Riddle (riddle_tag_add puts it on, riddle_tag_delete removes a label nothing carries). Untags one Riddle (UUID) or many (UUIDs, max 100), by tagName or tag…
Deletes the TAG ITSELF from a project - the label, for good - and no Riddle, no question bank and no assignment. Rarely needed: untagging the last carrier already removes a tag (riddle_tag_remove), so…
A simple tool that returns "Pong". Can be used to test connectivity and authentication to the MCP.
Returns a paginated list of Riddles. With the default scope "project" they come from a single project - use projectId to name it, or omit it for the project the API key is scoped to. With scope "accou…
Reads one Riddle - or several, with UUIDs - as the compact build-configuration envelope {uuid, type, modifiedAt, build, nextBlockId, warnings, published, context}. "build" is the DRAFT and is exactly …
Gets the HTML embed code for a Riddle by its UUID. The code is returned regardless of publish state, but the URL it embeds will not serve the Riddle until it is published.
Publishes one or many Riddles, or takes them off the web again with publish: false (there is no unpublish tool). A published Riddle's public URL is the response's "context.viewUrl" - report that, neve…
Renames a Riddle with the specified UUID. Returns only the confirmation of the change (uuid, title, modified state), not the entire Riddle. Only if the Riddle's origin.writableByThisKey is true (riddl…
Deletes one or many Riddles. Pass UUID for one, or UUIDs (max 100) to clean up several at once - e.g. everything riddle_list returned with origin: "api". A bulk delete is not atomic and never gives up…
Moves one or many Riddles into another project or into the personal project - and, given no destination, reports whether it could instead of moving anything. Pass UUID for one Riddle or UUIDs (max 100…
Reports the current API key: the authenticated user ("userEmail"/"userName", the latter null if never set), the project/team on a project-scoped key, whether this key has full access ("allowsFullAcces…
Creates a new, empty question bank for the given Riddle type ("Quiz" or "Poll"). Add items with question_bank_item_add, then reference the returned "id" as "questionBankId" on a QuestionBank block of …
Lists question banks. Scope "own" (the default) lists the banks of a project - the same ones the Creator shows; pass a projectId to look into another project, omit it for the project the API key is sc…
Retrieves one question bank by id: title, riddleType, tags, notes, its categories/blockTypes and whether it has unpublished changes. The items themselves are question_bank_get_items, not included here…
Sets the title of a question bank. The title is metadata rather than DRAFT content, so it takes effect immediately AND permanently, is unaffected by publishing or discarding and never counts as an unp…
Replaces the plain-text maintainer notes of a question bank (never shown to participants) - the previous notes are overwritten entirely, not appended to, so read them with question_bank_get first and …
Copies a question bank and all of its items into a new, independent bank (editing one never affects the other) in projectId or the key's project. The source is left untouched. This is the one write a …
Makes every item's draft content its published content - what a QuestionBank block of a live Riddle actually draws at view time - so the change reaches participants immediately: every Riddle using the…
Adds ONE new question/item to a question bank; nothing existing is changed (question_bank_item_update replaces an item, question_bank_item_delete removes one). There is no universal item shape: read r…
Replaces the content of ONE existing question/item of a question bank entirely - not a merge: blockType, category, difficulty and columns must all be sent even when unchanged, and a column or value le…
Throws away every unpublished change to a question bank's items at once, resetting each of them to its last published content. Irreversible - there is no undo and no copy of the discarded draft. A pen…
Deletes a question bank and every item it holds (its tags cleaned up exactly as question_bank_tag_remove does) - one item alone is question_bank_item_delete. Rejected with QUESTION_BANK_INTERDEPENDENC…
Deletes ONE question/item of a question bank and touches nothing else. On a never-published item the delete is immediate and permanent; on a published one it only leaves the DRAFT - a live Riddle keep…
Lists the items of a question bank - its DRAFT content by default, or its published items with published: true. Filter by search term, blockType, category or difficultyRange - the same filters a Quest…
Adds a tag to a question bank, by tagName or tagId from riddle_tag_list - exactly one of the two, as riddle_tag_add does. Question bank tags and Riddle tags are ONE set per project, not two: the same …
Removes a tag from a question bank, by tagName or tagId from riddle_tag_list - exactly one of the two. Never creates anything: a tag the bank does not carry is an error. A tag nothing uses any more is…
Reads the palettes - colors, fonts, button styles, background settings - of a Riddle: every palette it can use (the ones inherited from the account/project default preset included) with all of their v…
Changes the palette (colors, fonts, button styles, background) of ONE Riddle, as a path => value map, e.g. {"bgColor": "#ffffff", "font.name": "Roboto"} - the paths are palette_get's or riddle://refer…
Lists the Google Sheets and webhook integrations of a project as {items: [{id, type, name, connectedRiddles}]}. "name" is the value a build takes as publish.integrations.googlesheets / .webhook to con…
Builds a new Riddle of any of the nine types from a build configuration: "type" says which kind (see that argument for what each one is and what it needs at a minimum), "build" carries the content. Ev…
Edits an existing Riddle of any type with the same build configuration riddle_builder_create takes - but as a merge, not a rebuild: only the fields you send are touched, an omitted one is left exactly…
Dry-runs one or many Riddle Builder creates and/or edits without creating or changing anything: per entry of "builds", the same validation the real call would apply, run against a scratch/deep-copied …
Read this server's own documentation: the block types, form field types, result blocks, palette values and response shapes the other tools expect. Every "riddle://reference/..." URI named in a tool de…
Views/starts/submissions of one entity - "namespace" plus "entityId" says which (a project, a user, or a Riddle by UUID), "view" how deeply. "totals": one aggregate for the period. The response IS the…
Lists the projects this token has access to as {items, page, pageSize, total, hasMore} - the paging every listing of this server answers with (riddle://reference/concepts/response-envelope), here 25 p…
Returns one project by id - id, name, image and the authenticated user's permission matrix for it. The id comes from project_list or from the "team" of riddle_get. The project's default Riddle setting…
Returns the default Riddle settings every new Riddle of the project starts from - PUBLISHED and ENABLED only: "publishSettings" (privacy/DOI/OTP, email automation, tracking, data layer, ...) and "embe…
Shows the user the current DRAFT of a Riddle as a playable preview - the Riddle as it looks right now, published or not. Call it after riddle_builder_create or riddle_builder_update whenever the user …
Resources · 88
Overview of the Riddle MCP server: available tool categories, common workflows, and authentication model.
riddle://reference/getting-started
The build configuration is the standard {uuid, type, modifiedAt, build, nextBlockId, warnings, published, context} shape every tool of this MCP server that returns a Riddle answers with, the warnings …
riddle://reference/response-format
All 9 Riddle types with their required/optional build fields, result structure, and documentation links.
riddle://reference/riddle-builder/riddle-types
Question and content block types per Riddle type with required properties and item formats.
riddle://reference/riddle-builder/block-types
All 19 form field types for the FormBuilder block with their properties and configuration options.
riddle://reference/riddle-builder/form-field-types
All 12 result page block types with their properties, format options and styling configuration.
riddle://reference/riddle-builder/result-blocks
Every customizable palette value (colors, fonts, button styles, background) with the place it is used in a published Riddle and the CSS variable it is rendered into. These are the paths accepted by pa…
riddle://reference/palette/fields
The built-in default palettes with all of their values. They are the starting points for a custom palette: pass their id (e.g. "default:timeless") as paletteUUID to palette_customize and an editable c…
riddle://reference/palette/built-in-palettes
The font families which can be set as the palette font (font.name), plus how to configure a self-hosted or Google/Typekit font.
riddle://reference/palette/fonts
The resolved default of every publish setting ("publish.<name>") a riddle_get read-back leaves out - identical for every Riddle type that has publish settings, and therefore one address rather than a …
riddle://reference/publish-defaults
What every form field type of the FormBuilder block accepts - the constraint set it is checked against - and the resolved default of every property a riddle_get read-back leaves out of it. One documen…
riddle://reference/form-field-defaults
What a question bank is, how its items relate to a Riddle Builder QuestionBank block, the draft/publish model, and the category/difficulty/blockType filters a block draws with. Read this before the fi…
riddle://reference/question-bank/overview
Every blockType a question bank of a given Riddle type accepts, with the exact "columns" shape question_bank_item_add and question_bank_item_update expect for it and the minimum number of values per c…
riddle://reference/question-bank/block-type-columns
What a Ad block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Ad
What a Content block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Content
What a Quote block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Quote
What a SingleChoice block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/SingleChoice
What a MultipleChoice block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/MultipleChoice
What a TextEntry block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/TextEntry
What a Flashcard block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Flashcard
What a Order block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Order
What a TypeRush block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/TypeRush
What a GuessIt block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/GuessIt
What a TapAndFind block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/TapAndFind
What a SpotTheDifference block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/SpotTheDifference
What a QuestionBank block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/QuestionBank
What a FormBuilder block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/FormBuilder
What a FormField block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/FormField
What a Upvote block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Upvote
What a Matrix block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Matrix
What a NetPromoterScore block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/NetPromoterScore
What a Swiper block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Swiper
What a RateIt block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/RateIt
What a Reaction block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Reaction
What a TierList block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/TierList
What a ThisOrThat block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/ThisOrThat
What a GuessTheScore block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/GuessTheScore
What a PickTheWinner block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/PickTheWinner
What a SlotMachine block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/SlotMachine
What a WheelSpinner block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/WheelSpinner
What a Sudoku block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Sudoku
What a Minesweeper block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Minesweeper
What a Crosswords block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/Crosswords
What a InteractiveGraphic block accepts and what it defaults to, per Riddle type where they differ.
riddle://reference/block-defaults/InteractiveGraphic
What a Quiz Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Quiz
What a Poll Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Poll
What a Personality Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Personality
What a Form Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Form
What a Predictor Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Predictor
What a Minigame Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Minigame
What a Leaderboard Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Leaderboard
What a Story Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Story
What a Placeholder Riddle accepts at its own level, plus its Riddle-level, preset and publish defaults.
riddle://reference/riddle-defaults/Placeholder
What each tool is for and when to reach for it, grouped into the categories a client would browse them by. Not a parameter reference - every tool list already ships its own parameter descriptions - an…
riddle://reference/concepts/tools-by-category
The bare tool-call sequence for a dozen common multi-step tasks - create-and-publish, templating, restyling, moving Riddles, performance analysis, and the like. See riddle://reference/getting-started'…
riddle://reference/concepts/workflows
What this MCP key may change: by default only what automation created, with full access everything the user's role allows - how to check which applies, which tools are affected, and what to tell the u…
riddle://reference/concepts/access
How riddle_builder_update edits an existing Riddle: the $create/$delete/plain-id markers a block entry carries, what the $<name>Order marker does and where it may appear, what is rejected, and the ato…
riddle://reference/concepts/editing
Whether resending a collection in an edit merges it entry-by-entry by id, replaces it wholesale, or is rejected outright - and, separately, whether its entries can be reordered without a resend. One t…
riddle://reference/concepts/merge-semantics
How the defaults documents work: what a riddle_get read-back leaves out for still being at its default, what is never left out, and how to read a property name. The values themselves are one address p…
riddle://reference/concepts/defaults
What shape a Riddle-returning tool answers with, which tools return it verbatim versus their own small payload, what the "context" block carries, how every listing is shaped, and what a failed call lo…
riddle://reference/concepts/response-envelope
What a "warnings" entry means, what the per-block "omittedDefaults" maps are and how they differ from a warning, and what the "omit" parameter of riddle_get/riddle_builder_* can trim out of a response…
riddle://reference/concepts/warnings
How a call with "UUIDs" instead of "UUID" answers, for the tools that accept a list of Riddles at once: the {bulk: true, ...} envelope, partial failure, riddle_get's full-envelope variant and its size…
riddle://reference/concepts/bulk
Which properties a content block accepts on top of the ones its own block-type entry lists - media, layout, explanation and scoring flags shared across most Quiz/Poll/Personality blocks - and what eac…
riddle://reference/concepts/common-block-properties
How LaTeX math is written in any text property (\( ... \) inline, \[ ... \] or $$ ... $$ display/block), how to escape a literal delimiter with a backslash, how the TeX is stored and read back, and wh…
riddle://reference/concepts/math-formulas
How a result page is structured (minimal vs. advanced, single result vs. Quiz results array), how sending one replaces the whole page, its block-count limit, redirect results, and the margin/height/or…
riddle://reference/concepts/result-pages
How to write the "fields" of a FormBuilder block, and the properties shared across form field types via the "textInput"/"textInputNoRegex"/"basic" sets. The field types themselves are riddle://referen…
riddle://reference/concepts/form-fields-usage
The "logic" build field: node shapes for linear/answer/condition/score/solved/won branching, the condition operators available per field kind, and the rule for deleting a block a Riddle's existing cus…
riddle://reference/concepts/logic
Every setting of the "preset" build object - design (palette, language, footer/branding), timing (scheduling, timers) and behaviour (pagination, voting, the flat per-type scalars) - plus the implicit-…
riddle://reference/concepts/preset
The "publish" build object (DOI, OTP, email automation, tracking, embed settings), how draft and published versions of a Riddle relate, and what riddle_publish validates before making a Riddle live.
riddle://reference/concepts/publish
Every numeric ceiling the Builder API enforces: blocks per Riddle, items per collection, media per build, custom-logic blocks, result blocks per page.
riddle://reference/concepts/limits
Why a guessed or misspelled property name is a rejected build rather than a silent no-op, and the build fields common to every entry point - "project", "queue", "logic", "preset", "publish", "template…
riddle://reference/concepts/unknown-properties
Why a Riddle can be impossible to move rather than merely denied (it is connected to other Riddles), how riddle_move's check mode answers that for a set in advance, and what changes and what does not …
riddle://reference/concepts/move-restrictions
The shape of a question bank item ("columns", blockType, category, difficulty), how a QuestionBank block's criteria resolve against published items, pagination defaults, and how tags and ownership wor…
riddle://reference/concepts/question-bank-items
Known error and edge cases that span more than one tool or entity: Leaderboard connection/publish states, why a property is missing from a read-back, unbuildable logic conditions, the block-delete-vs-…
riddle://reference/concepts/troubleshooting
Build a lead-generation Quiz: entertaining questions, a form block that collects the respondent's contact data before the result, optional double opt-in, published and ready to embed.
riddle://reference/prompts/build_LeadGenQuiz
Build a standalone lead form (newsletter signup, registration, contact form): the right field types, GDPR consent, double opt-in and an automated confirmation email.
riddle://reference/prompts/build_LeadForm
Build a "which one fits me" product or plan recommender as a Personality test: each product is a personality, the questions score towards them, and every result links to its product page.
riddle://reference/prompts/build_ProductRecommender
Build a gated content Story: a teaser sequence, a form gate in the middle, and the asset (download link or the rest of the content) behind it.
riddle://reference/prompts/build_GatedContentStory
Build a prediction game with a public ranking: a Predictor for the picks, a Leaderboard connected to it, and the scoring rules that decide who wins.
riddle://reference/prompts/build_PredictorWithLeaderboard
Build a quiz contest (e.g. a daily quiz) with a ranked Leaderboard: timed and scored questions, one entry per participant, and a live ranking across the whole run.
riddle://reference/prompts/build_QuizContestWithLeaderboard
Restyle a Riddle to brand colors and fonts: read the palettes it can use, map the brand values onto the right palette fields, apply them and publish so the change reaches the embedded Riddle.
riddle://reference/prompts/restyle_ToBrand
Clean up the Riddle library: find the Riddles by filter, tag them, publish or unpublish the whole set in one call, and move them into the right project once the move is verified as possible.
riddle://reference/prompts/organize_Library
Localize a Riddle into another language: read it as a build configuration, create the translated counterpart of the same type with the language set, and keep the two in sync.
riddle://reference/prompts/localize_Riddle
Instrument a Riddle for analytics: switch on the tracking networks, configure which events they fire, enable the dataLayer pushes, and publish so the tracking goes live.
riddle://reference/prompts/setup_DataLayerTracking
Report on how a campaign performed: collect the Riddles that belong to it, pull views/starts/submissions and the daily trend, and turn the numbers into a readable report with a funnel and next steps.
riddle://reference/prompts/analyze_CampaignPerformance
Optimize an existing Riddle against its own stats: find where respondents drop off, propose the fixes, apply them as a merge edit and publish.
riddle://reference/prompts/optimize_Riddle
The interactive preview widget rendered for riddle_preview results: the playable Riddle draft, a publish button, a reload button, a mobile-width toggle, and links to the live page and into the Creator…
ui://riddle/preview-v1
Every reference document of this server with a one-line summary and its exact size in bytes. Read this first to decide which documents to read - it is by far the smallest of them.
riddle://reference/index
Prompts · 12
Restyle a Riddle to brand colors and fonts: read the palettes it can use, map the brand values onto the right palette fields, apply them and publish so the change reaches the embedded Riddle.
Clean up the Riddle library: find the Riddles by filter, tag them, publish or unpublish the whole set in one call, and move them into the right project once the move is verified as possible.
Localize a Riddle into another language: read it as a build configuration, create the translated counterpart of the same type with the language set, and keep the two in sync.
Instrument a Riddle for analytics: switch on the tracking networks, configure which events they fire, enable the dataLayer pushes, and publish so the tracking goes live.
Build a lead-generation Quiz: entertaining questions, a form block that collects the respondent's contact data before the result, optional double opt-in, published and ready to embed.
Build a standalone lead form (newsletter signup, registration, contact form): the right field types, GDPR consent, double opt-in and an automated confirmation email.
Build a "which one fits me" product or plan recommender as a Personality test: each product is a personality, the questions score towards them, and every result links to its product page.
Build a gated content Story: a teaser sequence, a form gate in the middle, and the asset (download link or the rest of the content) behind it.
Build a prediction game with a public ranking: a Predictor for the picks, a Leaderboard connected to it, and the scoring rules that decide who wins.
Build a quiz contest (e.g. a daily quiz) with a ranked Leaderboard: timed and scored questions, one entry per participant, and a live ranking across the whole run.
Report on how a campaign performed: collect the Riddles that belong to it, pull views/starts/submissions and the daily trend, and turn the numbers into a readable report with a funnel and next steps.
Optimize an existing Riddle against its own stats: find where respondents drop off, propose the fixes, apply them as a merge edit and publish.
How to use
Claude Desktop or claude.ai: add a custom connector (Customize → Connectors; on Team and Enterprise plans an owner adds it under Organization settings → Connectors) with this server URL: https://www.riddle.com/creator/api/v3/mcp
Cursor or Cline: add to your MCP config:
{
"mcpServers": {
"playwright_mcp_server": {
"url": "https://www.riddle.com/creator/api/v3/mcp",
"transport": "http"
}
}
}