uclass
Log inStart free
MCP · OAuth 2.1 · REST

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.

https://uclass.app/api/mcp

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_school

Get the creator's school (site) profile, public URL, plan, payment status and headline stats.

update_school

Update the school's name, tagline, description, brand color, logo, default language, URL slug (uclass.app/<slug>) or voice sample.

list_courses

List all courses in the school with price, status, language and student counts.

get_course

Get a course with its full curriculum (modules and lessons, without lesson bodies).

get_lesson

Get one lesson including its full markdown content and quiz.

create_course

Create a course manually, optionally with modules and lessons in one call. Created as an unpublished draft.

research_topic

Step 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_outline

Step 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_course

Step 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_status

Progress 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_pieces

Queues 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_piece

Rewrite 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_course

Update 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_course

Permanently delete a course, its lessons and enrollments. Requires confirm=true.

add_module

Add a module (section) to a course.

update_module

Rename or reorder a module.

delete_module

Delete a module and all its lessons. Requires confirm=true.

add_lesson

Add a lesson to a module. Set writeWithAI=true to have AI write the lesson body from the title and instructions.

update_lesson

Update 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_lesson

Delete a lesson. Requires confirm=true.

rewrite_lesson

Have AI write or improve a lesson's markdown body following your instructions (e.g. 'add a worked example', 'make it shorter').

generate_quiz

Generate a multiple-choice quiz for a lesson from its content and attach it.

write_sales_page

Have AI (re)write the course's subtitle, sales description, outcomes and target audience from its curriculum.

translate_course

Create 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_students

List enrolled students (optionally for one course) with progress.

enroll_student

Give a person free access to a course by email (creates their student account if needed). They sign in with that email.

get_sales

Revenue and sales summary for the last N days (default 30), per course, plus recent orders.

search_domains

Search available domain names to buy for the school, with prices (USD, first year).

connect_domain

Connect a domain the creator already owns to their school. Returns the DNS records they must add at their registrar.

list_domains

List 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"}}}'
Build on uclass · uclass