Build on uclass
uclass is agent-first: every feature is exposed as an MCP tool. Connect any AI assistant and let it run your school.
Connect your AI assistant
Add this remote MCP server URL to your client. It supports Streamable HTTP and OAuth 2.1 with dynamic client registration.
Claude.ai / Claude Desktop
Settings → Connectors → Add custom connector, paste the URL and sign in with your uclass account.
Claude Code
claude mcp add --transport http uclass https://uclass.app/api/mcp
Cursor / Windsurf / VS Code
{ "mcpServers": { "uclass": {
"url": "https://uclass.app/api/mcp",
"headers": { "Authorization": "Bearer uc_…" }
} } }ChatGPT & others
Add a custom MCP connector with the URL above; you'll be asked to sign in and approve access.
Prefer API keys? Create one in Integrations & MCP
30 tools
get_schoolGet the creator's school (site) profile, public URL, plan, payment status and headline stats.
update_schoolUpdate the school's name, tagline, description, brand color, logo, default language, URL slug (uclass.app/<slug>) or voice sample.
list_coursesList all courses in the school with price, status, language and student counts.
get_courseGet a course with its full curriculum (modules and lessons, without lesson bodies).
get_lessonGet one lesson including its full markdown content and quiz.
create_courseCreate a course manually, optionally with modules and lessons in one call. Created as an unpublished draft.
research_topicStep 1 of building a course with AI. Searches the web for the topic (and reads any files the teacher uploaded) and starts a course plan. Costs 3 AI units. Returns a buildId, the build kind and its size limits, and the sources found. Next, call propose_outline with the buildId. Free schools get starter builds (up to 3 modules and 12 lessons), Pro schools get full builds (up to 8 modules and 40 lessons).
propose_outlineStep 2. Writes the course outline for a build from research_topic: title, sales copy, price, modules and lessons, kept within the plan's limits. The first outline is free. Calling it again with `changes` revises the outline and costs 1 AI unit. Show the outline to the teacher and keep revising until they approve it, then call build_course with the returned outlineVersion.
build_courseStep 3. Starts writing the whole course from the approved outline in the background: syllabus, final assessment, and per lesson the student notes, slides, lecture script, worked example, exercise and quiz. Only call this after the teacher has seen the outline and said yes, with confirm=true and the outlineVersion they approved. Costs 15 AI units for a starter build or 30 for a full build. Returns the new courseId right away; follow progress with get_build_status.
get_build_statusProgress of a course build: status (PLANNING, QUEUED, RUNNING, DONE or FAILED), the courseId, how many pieces are done or failed out of the total, and which pieces failed. Also restarts a build whose runner stopped.
retry_failed_piecesQueues every failed piece of a finished build to be written again, in the background. Free, unless the build failed completely and its units were refunded: then it starts over and costs the build price again (15 for starter, 30 for full). Check progress with get_build_status.
regenerate_pieceRewrite one piece of a course with AI, optionally following the teacher's instructions, and save it over the current one. Lesson pieces (NOTES, SLIDES, SCRIPT, EXAMPLE, EXERCISE, QUIZ) need lessonId; SYLLABUS and FINAL_ASSESSMENT need courseId. Clears the lesson's reviewed tick. Costs 1 AI unit. Takes up to a minute.
update_courseUpdate course fields: title, subtitle, description, outcomes, audience, price, currency, image, language, category, slug, or publish/unpublish. Also the teaching bundle: syllabus, final assessment brief, final rubric (teacher-only) and reading list.
delete_coursePermanently delete a course, its lessons and enrollments. Requires confirm=true.
add_moduleAdd a module (section) to a course.
update_moduleRename or reorder a module.
delete_moduleDelete a module and all its lessons. Requires confirm=true.
add_lessonAdd a lesson to a module. Set writeWithAI=true to have AI write the lesson body from the title and instructions.
update_lessonUpdate a lesson's title, student notes (markdown content), video, duration, free-preview flag, or move it to another module/position. Also its teaching materials: slides, whether slides are shared with students, lecture script, worked example, exercise, marking guide, and the teacher's reviewed tick.
delete_lessonDelete a lesson. Requires confirm=true.
rewrite_lessonHave AI write or improve a lesson's markdown body following your instructions (e.g. 'add a worked example', 'make it shorter').
generate_quizGenerate a multiple-choice quiz for a lesson from its content and attach it.
write_sales_pageHave AI (re)write the course's subtitle, sales description, outcomes and target audience from its curriculum.
translate_courseCreate a translated copy of a course's whole teaching bundle in another language, as a new unpublished draft: titles, sales copy, syllabus, final assessment and rubric, reading list notes (titles and links stay as they are), and every lesson's notes, slides, lecture script, worked example, exercise, marking guide and quiz. Costs 20 AI units, so ask the teacher first and only call it with confirm=true once they agree. The copy is created right away and filled in by a background build. Returns the buildId and the new courseId; check progress with get_build_status.
list_studentsList enrolled students (optionally for one course) with progress.
enroll_studentGive a person free access to a course by email (creates their student account if needed). They sign in with that email.
get_salesRevenue and sales summary for the last N days (default 30), per course, plus recent orders.
search_domainsSearch available domain names to buy for the school, with prices (USD, first year).
connect_domainConnect a domain the creator already owns to their school. Returns the DNS records they must add at their registrar.
list_domainsList the school's custom domains and their DNS/TLS status (re-checks pending ones).
Call it directly
curl https://uclass.app/api/mcp \
-H "Authorization: Bearer $UCLASS_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"research_topic",
"arguments":{"topic":"Sourdough baking","language":"fr"}}}'