{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:59:22.478Z","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen","markdownUrl":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen.md","server":{"slug":"dev-quizgen-quizgen","name":"QuizGen","registryName":"dev.quizgen/quizgen","description":"Create hosted quizzes, forms and surveys, send them, and read the responses.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"quizgen","type":"remote","identifier":"https://quizgen.dev/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen","version":"1.0.0","transport":null,"scoredAt":"2026-11-05T06:18:57.976Z"},"score":{"total":75,"tier":"medium","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":75},{"date":"2026-11-04","total":75},{"date":"2026-11-03","total":74},{"date":"2026-11-02","total":74},{"date":"2026-11-01","total":73},{"date":"2026-10-31","total":73},{"date":"2026-10-30","total":72},{"date":"2026-10-29","total":72},{"date":"2026-10-28","total":71},{"date":"2026-10-27","total":71},{"date":"2026-10-26","total":71},{"date":"2026-10-25","total":70},{"date":"2026-10-24","total":70},{"date":"2026-10-23","total":69},{"date":"2026-10-22","total":69},{"date":"2026-10-21","total":68},{"date":"2026-10-20","total":68},{"date":"2026-10-19","total":67},{"date":"2026-10-18","total":67},{"date":"2026-10-17","total":66}]},"categories":[{"name":"Endpoint Security","score":63,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_quiz).","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_destructive","args":{"tool":"delete_quiz"}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":75,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 1372 tokens (~98/item across 14 items; 14 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"98","items":"14","tools":"14","tokens":"1372","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":63,"verdict":"partial","reasons":["Stability observed for 19 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"19"}}]},{"name":"Tool Coverage","score":95,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","81% of tool parameters carry a description.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"81"}},{"code":"toolquality.output_present","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.","An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_declared","args":{"pct":"100","annotated":"2","destructive":"2"}},{"code":"toolsafety.manipulation_clean","args":{"units":"15","judged":"15"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"quizgen","type":"remote","identifier":"https://quizgen.dev/mcp","withdrawn":false,"score":75,"current":true,"url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen","markdownUrl":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen.md"}],"facts":[{"label":"Endpoint","value":"https://quizgen.dev/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.0.0"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"create_quiz","title":"Create Quiz","description":"Create a live, hosted quiz/form/survey and get its shareable URL. Without authorization this creates a temporary sandbox quiz (72 hours, 10 responses) with a secret claim_url to keep it. The definition schema below is the complete quiz format — only the 19 documented question types exist, and unknown fields are rejected.","inputs":[{"name":"creator_email","type":"string","required":false,"description":"Optional, sandbox only: your user's email. They get the claim link by email immediately plus one reminder before the quiz expires — worth asking the user for. Never invent one."},{"name":"definition","type":"object","required":true,"description":null},{"name":"idempotency_key","type":"string","required":false,"description":"Optional. Same key within 24h returns the originally created quiz instead of a duplicate."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":151},{"name":"list_quizzes","title":"List Quizzes","description":"List quizzes owned by the connected QuizGen account, newest first (default 50 per page; the result includes total and has_more). Requires authorization.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Max quizzes to return (default 50)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many quizzes (use next_offset from the previous page)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":73},{"name":"get_quiz","title":"Get Quiz","description":"Get one quiz including its full definition. Requires an authorized account that owns the quiz.","inputs":[{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":50},{"name":"update_quiz","title":"Update Quiz","description":"Replace a quiz's definition (full replacement, not a patch — send the complete new definition). The quiz keeps its URL and responses. Requires an authorized account that owns the quiz.","inputs":[{"name":"definition","type":"object","required":true,"description":null},{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":76},{"name":"set_quiz_status","title":"Set Quiz Status","description":"Open (\"live\") or close (\"closed\") a quiz. Closed quizzes stop accepting responses but keep their data.","inputs":[{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."},{"name":"status","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":63},{"name":"delete_quiz","title":"Delete Quiz","description":"Delete a quiz. Its URL stops working and responses become inaccessible. Confirm with your user before calling this.","inputs":[{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":54},{"name":"get_responses","title":"Get Responses","description":"List a quiz's responses (answers, outcome, score, timestamps), newest first (default 50 per page; the result includes total and has_more). Requires an authorized account that owns the quiz.","inputs":[{"name":"complete_only","type":"boolean","required":false,"description":"If true, return only completed responses."},{"name":"limit","type":"integer","required":false,"description":"Max responses to return (default 50)."},{"name":"offset","type":"integer","required":false,"description":"Skip this many responses (use next_offset from the previous page)."},{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":122},{"name":"get_response","title":"Get Response","description":"Get a single response by id.","inputs":[{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."},{"name":"response_id","type":"string","required":true,"description":"Response id."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":49},{"name":"get_quiz_stats","title":"Get Quiz Stats","description":"Get a quiz's funnel stats: views, started, finished, completion rate, and outcome counts.","inputs":[{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":54},{"name":"set_webhook","title":"Set Webhook","description":"Set (url) or clear (url: null) the webhook for a quiz. Completed responses POST to the url; with a secret, requests carry an X-QuizGen-Signature HMAC-SHA256 header.","inputs":[{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."},{"name":"secret","type":"string","required":false,"description":"Optional signing secret (min 8 chars)."},{"name":"url","type":"string|null","required":true,"description":"https:// URL to receive completed responses, or null to clear."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":113},{"name":"send_quiz_by_email","title":"Send Quiz By Email","description":"Email the quiz to recipients — each gets a unique tracked link so responses tie back to them (see get_sends). Any account with a confirmed email address; capped per month and per 24 hours (Free: 200/mo, 50/day; Plus: 5,000/mo). Confirm the recipient list with your user before calling: this sends real email immediately.","inputs":[{"name":"message","type":"string","required":false,"description":"Optional short note from the sender, shown above the button."},{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."},{"name":"recipients","type":"array","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":135},{"name":"get_sends","title":"Get Sends","description":"Delivery status for a quiz's email sends: sent / started / completed per recipient, plus reminder counts and opt-outs.","inputs":[{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":57},{"name":"set_follow_up","title":"Set Follow Up","description":"Set (or clear with rule: null) automatic email reminders for recipients who haven't completed the quiz. Stops on completion, opt-out, or max_reminders.","inputs":[{"name":"quiz_id","type":"string","required":true,"description":"Quiz id (the `id` field returned by create_quiz/list_quizzes)."},{"name":"rule","type":"object|null","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":73},{"name":"check_account","title":"Check Connected Account","description":"Return the connected account's email, plan, and limits. Call this to verify that QuizGen authorization (OAuth or API key) is active. (Formerly named check_api_key; the old name still works.)","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":51}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T06:18:57.000Z","track":"remote","endpoint":"https://quizgen.dev/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=quizgen.dev","issuer":"CN=YR2,O=Let's Encrypt,C=US","notBefore":"2026-10-03T16:34:30Z","notAfter":"2027-01-01T16:34:29Z","keyType":"RSA","keyBits":2048,"isCa":false},{"subject":"CN=YR2,O=Let's Encrypt,C=US","issuer":"CN=Root YR,O=ISRG,C=US","notBefore":"2025-09-03T00:00:00Z","notAfter":"2028-09-02T23:59:59Z","keyType":"RSA","keyBits":2048,"isCa":true},{"subject":"CN=Root YR,O=ISRG,C=US","issuer":"CN=ISRG Root X1,O=Internet Security Research Group,C=US","notBefore":"2026-05-13T00:00:00Z","notAfter":"2032-09-02T23:59:59Z","keyType":"RSA","keyBits":4096,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"quizgen.dev.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"dev.","outcome":"verified","label":"Verified"},{"zone":"quizgen.dev.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":308},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-17","recent":[{"id":"chg_01a1a531-3dcb-725b-a017-87a61973971d","kind":"score.total_changed","summary":"Trust score (74 → 75)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a1a531-3dcb-725b-a017-87a61973971d"},{"id":"chg_01a19ad8-9b65-7eb5-90c1-b5ef45576e86","kind":"score.total_changed","summary":"Trust score (73 → 74)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a19ad8-9b65-7eb5-90c1-b5ef45576e86"},{"id":"chg_01a19093-7317-71c4-ac49-b5838290134a","kind":"score.total_changed","summary":"Trust score (72 → 73)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a19093-7317-71c4-ac49-b5838290134a"},{"id":"chg_01a1864a-64c9-7b97-8628-e6a86ff7e517","kind":"score.total_changed","summary":"Trust score (71 → 72)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a1864a-64c9-7b97-8628-e6a86ff7e517"},{"id":"chg_01a176d3-7277-70e1-9557-9a962bee7fba","kind":"score.total_changed","summary":"Trust score (70 → 71)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a176d3-7277-70e1-9557-9a962bee7fba"},{"id":"chg_01a16c85-6ce2-7989-8f67-63b657868bbb","kind":"score.total_changed","summary":"Trust score (69 → 70)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a16c85-6ce2-7989-8f67-63b657868bbb"},{"id":"chg_01a1623a-161a-78d1-8108-f257fd20ed75","kind":"score.total_changed","summary":"Trust score (68 → 69)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a1623a-161a-78d1-8108-f257fd20ed75"},{"id":"chg_01a157ec-a0ab-7049-97b4-648c89d5d4d4","kind":"score.total_changed","summary":"Trust score (67 → 68)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-20","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a157ec-a0ab-7049-97b4-648c89d5d4d4"},{"id":"chg_01a14da3-0e03-78d0-a3ed-7dc3b4079762","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a14da3-0e03-78d0-a3ed-7dc3b4079762"},{"id":"chg_01a14da3-0e04-7ac6-97cf-ce98205bf9ff","kind":"score.total_changed","summary":"Trust score (66 → 67)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-18","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a14da3-0e04-7ac6-97cf-ce98205bf9ff"},{"id":"chg_01a14b05-85fe-724e-abe7-694e699e446c","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-17","url":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen#chg-chg_01a14b05-85fe-724e-abe7-694e699e446c"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen/changelog.json"},"links":{"html":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen","markdown":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen.md","changelogJson":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen/changelog.json","changelogRss":"https://verifymcp.io/servers/dev-quizgen-quizgen/quizgen.xml","external":[{"label":"Remote endpoint","href":"https://quizgen.dev/mcp"},{"label":"Website","href":"https://quizgen.dev/"}]}}