{"apiVersion":"v1","directorySlug":"ripostiq-mcp-fa86368c23","title":"Learn it. Build it. Defend it. · Ripostiq","description":"A tutor that adapts to you, makes you build, and won't pass you until you can defend your work — inside Claude.","pageUrl":"https://www.mcpbundles.com/skills/ripostiq-mcp-fa86368c23","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://ripostiq.com/mcp","hostedMcpUrl":null,"toolCount":24,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.ripostiq/ripostiq-mcp-fa86368c23","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"login","description":"Claude Code plugin login only (auth_token flow). On the web/desktop connector, identity\ncomes from the connector's OAuth approval — do NOT ask the user to type their email/password\ninto the chat; direct them to the connector's 'Log in with Ripostiq' or ripostiq.com instead.","inputSchema":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string"},"password":{"type":"string"}},"additionalProperties":false},"title":"Log in","logicalName":"login","displayName":"Log in","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"whoami","description":"Return the current logged-in user (via OAuth bearer or an auth_token).","inputSchema":{"type":"object","properties":{"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Who am I","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"whoami","displayName":"Who am I"},{"name":"get_entitlements","description":"List the logged-in account's entitlements across courses (OAuth bearer or auth_token).","inputSchema":{"type":"object","properties":{"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Get entitlements","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_entitlements","displayName":"Get entitlements"},{"name":"get_lesson","description":"Fetch a module's lesson content. Free module is open; paid modules require an\nactive entitlement. Returns {locked, teaser, checkout_url} when not entitled.","inputSchema":{"type":"object","required":["course","module"],"properties":{"course":{"type":"string"},"module":{"type":"string"},"section":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Get lesson","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_lesson","displayName":"Get lesson"},{"name":"list_courses","description":"List every available Ripostiq course (no login needed). Call this FIRST when a user wants\nto browse or start learning. Each course has a free Module 1 anyone can start immediately via\nbegin_course(course) → teach_section. Returns the `course` id to pass to other tools.\nFor a logged-in learner this also includes courses THEY authored (marked `mine`, with their\n`visibility`) — offer those alongside the catalog.","inputSchema":{"type":"object","properties":{"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"List courses","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_courses","displayName":"List courses"},{"name":"begin_course","description":"Start a course. Returns the tutor protocol, intake guidance, and the module map.\nCall this first, run the intake, then call teach_section to teach Module 1.","inputSchema":{"type":"object","required":["course"],"properties":{"course":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Begin course","logicalName":"begin_course","displayName":"Begin course","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"roast","description":"Free 'Roast my work' — a single tough-but-fair stakeholder grilling of ANY artifact the\nuser pastes (PRD, architecture, code, pitch, resume, plan, essay…). No login or course\nneeded. `work` is the artifact (or a solid description); `kind` optionally hints the type\n(prd/architecture/code/pitch/strategy/resume/design…) to pick the right persona; `focus` is\nwhat they most want pushback on. Returns the roast protocol + a course recommendation. Great\nas an entry point when someone wants honest, point","inputSchema":{"type":"object","required":["work"],"properties":{"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"work":{"type":"string"},"focus":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Roast my work","logicalName":"roast","displayName":"Roast my work","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"interview_prep","description":"Free 'Mock interview' — a realistic, calibrated interview for a role. `jd_or_skill` is the\njob description (paste it) or the skill/role to interview against; `role` and `experience`\n(e.g. 'senior backend engineer', '5 years') calibrate difficulty; `focus` narrows it (e.g.\n'system design'). No login or course needed. Returns the interview protocol + a course\nrecommendation. Great when someone is prepping for an interview and wants a real grilling.","inputSchema":{"type":"object","required":["jd_or_skill"],"properties":{"role":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"focus":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"experience":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"jd_or_skill":{"type":"string"}},"additionalProperties":false},"title":"Mock interview","logicalName":"interview_prep","displayName":"Mock interview","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_interviews","description":"List the curated Interview-Prep topics (e.g. 'Agentic AI in Production'). Each is a\nrealistic, adaptive mock interview on a fixed topic — concept→scenario question pairs across\nseveral areas — that ends in a candid scorecard. No login or course needed. Call this when\nsomeone wants to prep for an interview on a topic the catalog covers, then start_interview.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"title":"List interview-prep topics","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_interviews","displayName":"List interview-prep topics"},{"name":"start_interview","description":"Begin a curated Interview-Prep session on a fixed topic. `interview` is the topic id from\nlist_interviews (e.g. 'agentic-ai-in-production'); `role`/`experience` calibrate difficulty.\nLOGIN REQUIRED (free in the current beta, like a course): if the learner isn't logged in this\nreturns needs_login — ask them to log in with the connector, don't run the questions. Once\nunlocked, returns the question bank + an adaptive protocol (one question at a time across ~4-5\nareas, concept then scenario, hint wh","inputSchema":{"type":"object","required":["interview"],"properties":{"role":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"interview":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"experience":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Start interview prep","logicalName":"start_interview","displayName":"Start interview prep","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"teach_section","description":"Get one lesson section's content + the teaching protocol for it. Free module is\nopen; paid modules require an active entitlement (returns {locked, teaser} if not).\nTeach it socratically, then call again with section_index+1 to advance.","inputSchema":{"type":"object","required":["course","module"],"properties":{"course":{"type":"string"},"module":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"section_index":{"type":"integer","default":0}},"additionalProperties":false},"title":"Teach section","logicalName":"teach_section","displayName":"Teach section","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"run_boss","description":"Get the module's boss-battle simulation + how to run it (in-character, real stakes,\nearned PASS). Gated like lessons. `difficulty` dials the intensity — 'friendly' (supportive\ncoach), 'standard' (default), or 'brutal' (relentless, skeptical, high bar) — and optional\n`persona_style` sets a flavor (e.g. 'skeptical CTO', 'hostile board member'). The rubric is\nunchanged; only how hard the stakeholder presses. Offer the learner the choice first.","inputSchema":{"type":"object","required":["course","module"],"properties":{"course":{"type":"string"},"module":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"difficulty":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"persona_style":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Run boss battle","logicalName":"run_boss","displayName":"Run boss battle","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"daily_drill","description":"The two-minute drill — today's spaced-recall question + the learner's day streak. Call it\nto fetch today's question (deterministic per day, drawn from modules they've started); after\nthey answer and you reveal it, call again with done=true to log it and bump the streak. A\ndaily habit: one question, two minutes, keep the streak alive.","inputSchema":{"type":"object","required":["course"],"properties":{"done":{"type":"boolean","default":false},"course":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Two-minute daily drill","logicalName":"daily_drill","displayName":"Two-minute daily drill","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"start_exam","description":"Start the course's SCORED PRACTICE EXAM — a full, blueprint-aligned multiple-choice mock\nthat returns a scaled score against the real pass line, a per-domain breakdown, and rationale\nfor every question. Login + entitlement gated like the paid capstone (returns needs_login /\nlocked if not). Returns a drawn `form` of questions WITHOUT the answers (the key is held\nserver-side); proctor them one at a time, collect the learner's letters, then call\nsubmit_exam(course, answers) to score. Never reveal o","inputSchema":{"type":"object","required":["course"],"properties":{"course":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Start practice exam","logicalName":"start_exam","displayName":"Start practice exam","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"submit_exam","description":"Score a practice exam started with start_exam. `answers` maps each question id to the\nlearner's chosen letter, e.g. {\"q001\": \"A\", \"q002\": \"C\"}; unanswered questions score as\nincorrect. Returns the scaled score, PASS/FAIL vs the pass line, a per-domain breakdown, and\nthe per-question rationale for review. Deliver it as an honest scorecard and point them to the\nweak domains' modules.","inputSchema":{"type":"object","required":["course","answers"],"properties":{"course":{"type":"string"},"answers":{"type":"object","additionalProperties":true},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Submit exam answers and score the attempt","logicalName":"submit_exam","displayName":"Submit exam answers and score the attempt","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_outline","description":"Full course outline — every module + its section titles — so the learner can pick ANY\nmodule/section to start, in any order. Marks locked modules and their progress.","inputSchema":{"type":"object","required":["course"],"properties":{"course":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Get course outline","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_outline","displayName":"Get course outline"},{"name":"mark_progress","description":"Record the learner's progress server-side (shows on their account + syncs across\ndevices). Call when a section is genuinely completed (section_id), or after a boss battle\n(boss='passed'/'failed', boss_attempt=true), or on a lab status change (lab=...).","inputSchema":{"type":"object","required":["course","module"],"properties":{"lab":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"boss":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"course":{"type":"string"},"module":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"section_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"boss_attempt":{"type":"boolean","default":false}},"additionalProperties":false},"title":"Update saved progress","logicalName":"mark_progress","displayName":"Update saved progress","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_recap","description":"Resume briefing for a returning learner — what they've covered, mastery levels,\nstrong/weak topics, and recall questions to reactivate memory. Call at session start.","inputSchema":{"type":"object","required":["course"],"properties":{"course":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Get recap","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_recap","displayName":"Get recap"},{"name":"get_progress","description":"Return the learner's progress for a course — the raw doc plus a display-ready summary\n(per-module sections done/total, boss status, overall percent, current position), and\nwind_down coverage (which modules have their cheatsheet + session summary saved).","inputSchema":{"type":"object","required":["course"],"properties":{"course":{"type":"string"},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Get progress","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_progress","displayName":"Get progress"},{"name":"recall_questions","description":"Return spaced-recall questions drawn from the account's completed modules.","inputSchema":{"type":"object","required":["auth_token","course"],"properties":{"count":{"type":"integer","default":2},"course":{"type":"string"},"auth_token":{"type":"string"}},"additionalProperties":false},"title":"Recall questions","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"recall_questions","displayName":"Recall questions"},{"name":"list_artifacts","description":"List the learner's saved Library artifacts (titles + metadata, newest first). Use at\nsession start (with get_recap) to reference prior work and continue seamlessly.","inputSchema":{"type":"object","required":["course"],"properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"course":{"type":"string"},"module":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"List library","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_artifacts","displayName":"List library"},{"name":"get_artifact","description":"Fetch a saved Library artifact's full content (by id, or by key+course). Use to pull a\nprior deliverable forward and build on it in a new chat.","inputSchema":{"type":"object","properties":{"key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"course":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"artifact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Get artifact","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_artifact","displayName":"Get artifact"},{"name":"submit_artifact","description":"Submit a lab deliverable. Stores it in the learner's Library (type='deliverable') and\nreturns the module rubric so it can be reviewed against the bar. Call get_review next.\nFor general note-taking use save_artifact instead.","inputSchema":{"type":"object","required":["course","module","type"],"properties":{"type":{"type":"string"},"course":{"type":"string"},"module":{"type":"string"},"repo_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"content_text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Submit lab deliverable","logicalName":"submit_artifact","displayName":"Submit lab deliverable","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_certificate","description":"Ripostiq certificate status. Pass `module` for that module's certificate (earned when\nits boss battle is passed); omit it for the course certificate (earned when EVERY module's\nboss is passed). Both are viewable at /certificate and publicly verifiable at /verify/<code>.","inputSchema":{"type":"object","required":["course"],"properties":{"course":{"type":"string"},"module":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"auth_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null}},"additionalProperties":false},"title":"Get certificate","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_certificate","displayName":"Get certificate"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Learn-it-Build-it-Defend-it-Ripostiq&config=eyJ1cmwiOiAiaHR0cHM6Ly9yaXBvc3RpcS5jb20vbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Learn-it-Build-it-Defend-it-Ripostiq%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fripostiq.com%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Learn-it-Build-it-Defend-it-Ripostiq%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fripostiq.com%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Learn+it.+Build+it.+Defend+it.+%C2%B7+Ripostiq&connectorUrl=https%3A%2F%2Fripostiq.com%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Learn-it-Build-it-Defend-it-Ripostiq\" --url \"https://ripostiq.com/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/ripostiq-mcp-fa86368c23","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/ripostiq-mcp-fa86368c23/tools/{tool}","mcpServerUrl":"https://ripostiq.com/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/ripostiq-mcp-fa86368c23?live=1"}