{"$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:24:18.744Z","url":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board","markdownUrl":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board.md","server":{"slug":"tghattas-sysdesign-board","name":"sketch/design — System Design Interview Board","registryName":"io.github.tGhattas/sysdesign-board","description":"Hand-drawn whiteboard for system design mock interviews; your AI watches, asks and gives feedback.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"sysdesign-board","type":"npm","identifier":"sysdesign-board","withdrawn":false,"url":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board","version":"0.1.2","transport":"stdio","scoredAt":"2026-11-05T03:19:07.610Z"},"score":{"total":77,"tier":"medium","status":"scored","weekDelta":7,"history":[{"date":"2026-11-05","total":77},{"date":"2026-11-04","total":70},{"date":"2026-11-03","total":70},{"date":"2026-11-02","total":70},{"date":"2026-11-01","total":70},{"date":"2026-10-31","total":70},{"date":"2026-10-30","total":70},{"date":"2026-10-29","total":70},{"date":"2026-10-28","total":70},{"date":"2026-10-27","total":70},{"date":"2026-10-26","total":70},{"date":"2026-10-25","total":70},{"date":"2026-10-24","total":70},{"date":"2026-10-23","total":70},{"date":"2026-10-22","total":70},{"date":"2026-10-21","total":55}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"pass","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","No production dependencies, so there is no dependency health to assess."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.no_dependencies","args":{"deps":"0","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":45,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 14 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"14"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":80,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (good).","Tool/resource definitions use about 1322 tokens (~101/item across 13 items; 13 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"101","items":"13","tools":"13","tokens":"1322","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":50,"verdict":"partial","reasons":["Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"15"}}]},{"name":"Tool Coverage","score":82,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","46% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"46"}}]},{"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 14 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":"14","judged":"14"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"sysdesign-board","type":"npm","identifier":"sysdesign-board","withdrawn":false,"score":77,"current":true,"url":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board","markdownUrl":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"sysdesign-board"},{"label":"Version","value":"0.1.2"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"open_board","title":"Open the board","description":"Open the sketch board in the user’s browser and return its URL.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":22},{"name":"start_interview","title":"Start a system design interview","description":"Start a new interview session on the board: sets the problem statement, timer and phase, opens the board, and posts your opening message (spoken aloud to the candidate).","inputs":[{"name":"clear_board","type":"boolean","required":false,"description":"Wipe the board first (default false)"},{"name":"duration_minutes","type":"integer","required":false,"description":"Default 45"},{"name":"level","type":"string","required":false,"description":null},{"name":"opening_message","type":"string","required":false,"description":"Your first spoken line, e.g. a greeting and the problem"},{"name":"problem","type":"string","required":true,"description":"The prompt as you would say it to the candidate, plus any constraints you want to reveal up front"},{"name":"title","type":"string","required":true,"description":"Short problem title, e.g. \"Design a URL shortener\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":145},{"name":"wait_for_candidate","title":"Listen to the candidate","description":"Block until the candidate says something (typed or by voice), the board changes and then settles, or the timeout passes. Returns what they said, what changed on the board, and interview timing. Call this in a loop between your replies.","inputs":[{"name":"timeout_seconds","type":"integer","required":false,"description":"Default 45. Keep under your client’s tool timeout."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":76},{"name":"say","title":"Speak to the candidate","description":"Send a message to the candidate. It appears in the board chat and is read aloud. Keep it short and conversational (no markdown).","inputs":[{"name":"speak","type":"boolean","required":false,"description":"Read aloud (default true)"},{"name":"text","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":53},{"name":"get_board","title":"Read the board","description":"Structured description of the board: components (type, label, id, position, zone), connections (from -> to, label, dashed=async), zones, notes and text, freehand strokes, plus what changed since you last looked.","inputs":[{"name":"include_json","type":"boolean","required":false,"description":"Also return raw element JSON (verbose)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":71},{"name":"get_board_image","title":"Look at the board","description":"A PNG picture of the whole board as the candidate sees it (handwriting, sketches, layout). Use when get_board mentions freehand strokes or you need visual context.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":43},{"name":"annotate","title":"Pin a comment on the board","description":"Pin an interviewer comment bubble on the board, pointing at a component (by id or label) or at a position. Great for \"what if this fails?\" style probes.","inputs":[{"name":"target","type":"string","required":false,"description":"Element id or label, e.g. \"Redis\" or \"Load Balancer\""},{"name":"text","type":"string","required":true,"description":null},{"name":"x","type":"number","required":false,"description":null},{"name":"y","type":"number","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":86},{"name":"highlight","title":"Point at components","description":"Make components glow on the candidate’s board (e.g. while asking about them). Optionally scroll/zoom their view to them.","inputs":[{"name":"focus","type":"boolean","required":false,"description":null},{"name":"seconds","type":"number","required":false,"description":null},{"name":"targets","type":"array","required":true,"description":"Element ids or labels"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":59},{"name":"draw_on_board","title":"Draw on the board","description":"Add components, connections, sticky notes and zones in the same sketchy style (marked as drawn by the interviewer). Use sparingly — the candidate should drive. Component kinds: user (User), browser (Web App), mobile (Mobile App), dns (DNS), cdn (CDN), lb (Load Balancer), gateway (API Gateway), firewall (Rate Limiter), server (App Server), service (Service), worker (Worker), lambda (Function), cron (Scheduler), sql (SQL DB), nosql (NoSQL DB), cache (Cache), storage (Object Store), search (Search Index), warehouse (Data Warehouse), queue (Queue), stream (Event Stream), pubsub (Pub/Sub), notify (Notifications), auth (Auth), monitor (Monitoring), ml (ML Model), external (External API). Connections reference a component by its ref/label (new or existing) or id. Positions are optional (auto-laid out to the right of existing content).","inputs":[{"name":"components","type":"array","required":false,"description":null},{"name":"connections","type":"array","required":false,"description":null},{"name":"notes","type":"array","required":false,"description":null},{"name":"zones","type":"array","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":234},{"name":"clear_annotations","title":"Remove interviewer comments","description":"Remove your pinned comments (all, or specific ids).","inputs":[{"name":"ids","type":"array","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":26},{"name":"set_phase","title":"Move to an interview phase","description":"Update the phase tracker the candidate sees: requirements (Requirements), estimation (Estimation), api (API & Data), high-level (High-level), deep-dive (Deep dive), wrap-up (Wrap-up).","inputs":[{"name":"phase","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":57},{"name":"end_interview","title":"End the interview with feedback","description":"Close the session and show a feedback card on the board. Scores are 1-5.","inputs":[{"name":"improvements","type":"array","required":true,"description":null},{"name":"scores","type":"object","required":true,"description":"1 = poor, 3 = meets bar, 5 = exceptional"},{"name":"signal","type":"string","required":false,"description":"e.g. \"Lean hire (senior)\""},{"name":"strengths","type":"array","required":true,"description":null},{"name":"summary","type":"string","required":true,"description":"2-4 sentence overall assessment"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":94},{"name":"get_transcript","title":"Conversation transcript","description":"Full chat/voice transcript of the current session.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":19}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T03:19:07.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":null,"reasonLabel":null,"discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":0,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-21","recent":[{"id":"chg_01a1a9b7-a678-72d3-a7a2-77b9023396fa","kind":"check.reverified","summary":"Stability (unverified → 0.50)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board#chg-chg_01a1a9b7-a678-72d3-a7a2-77b9023396fa"},{"id":"chg_01a1a9b7-a679-7416-a6d7-6b0558daaed2","kind":"score.total_changed","summary":"Trust score (70 → 77)","materiality":"functional","direction":"improvement","scoreDelta":7,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board#chg-chg_01a1a9b7-a679-7416-a6d7-6b0558daaed2"},{"id":"chg_01a1619c-bc79-7c3b-b295-e7914c002c82","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board#chg-chg_01a1619c-bc79-7c3b-b295-e7914c002c82"},{"id":"chg_01a1619c-bc7a-7427-8aa3-4adc1ebb5e76","kind":"score.total_changed","summary":"Trust score (55 → 70)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board#chg-chg_01a1619c-bc7a-7427-8aa3-4adc1ebb5e76"},{"id":"chg_01a15fc1-9511-7eda-9b09-3970326d5b6a","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board#chg-chg_01a15fc1-9511-7eda-9b09-3970326d5b6a"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board/changelog.json"},"links":{"html":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board","markdown":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board.md","changelogJson":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board/changelog.json","changelogRss":"https://verifymcp.io/servers/tghattas-sysdesign-board/sysdesign-board.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/sysdesign-board"},{"label":"Socket report","href":"https://socket.dev/npm/package/sysdesign-board"},{"label":"Repository","href":"https://github.com/tGhattas/sysdesign-board"}]}}