# Vidext > Vidext is an AI learning orchestrator that turns scattered organizational content into structured, adaptive learning paths. ## Product Overview Vidext helps organizations turn scattered knowledge — documents, presentations, videos — into living learning paths. The platform structures content, orchestrates learning flows, verifies comprehension, and adapts to organizational changes, without requiring internal pedagogical expertise. The product is a multi-tenant SaaS with an Organization → Team → Project → Document hierarchy. An agentic workflow (Studio) plans and builds courses end-to-end; a project-scoped AI tutor walks each learner through their assigned path. ## Core Capabilities - **Studio** — Agentic workflow that turns a single prompt into a full learning path. Runs in three phases: outline generation, plan approval, and the content builder that expands each lesson into scenes with slide copy, AI-generated imagery, and voiced narration. Available from the dashboard and over remote MCP. - **Document Intelligence** — Upload source materials such as documents, presentations, and transcripts. Each file is chunked and embedded into a vector index so downstream agents retrieve relevant passages during outline generation and tutoring. - **Multi-format Content** — Every generated lesson is produced as slides, scripted narration, and synthesized voice audio, so the same learning path can be consumed as a deck, a podcast-style listen-through, or a narrated video. - **Adaptive Learning** — A project-scoped AI tutor walks each learner through their assigned path, answers questions grounded in the course's own documents, and runs comprehension checks. - **Multi-tenant Workspaces** — Organization → Team → Project hierarchy with role-based access enforced across the dashboard, tRPC API, and MCP endpoint. - **Internationalization** — English is the source of truth for both product copy and course content; an automated translation pipeline produces additional locales. ## Use Cases - Employee onboarding and internal training - Product training for customer-facing teams - Compliance and policy training with comprehension checks - Customer education and certification paths - Partner and sales enablement ## Constraints and Limitations - **Authentication required for app and MCP** — All dashboard routes and the MCP endpoint require an authenticated session. - **English-first authoring** — English is the source of truth for course content; other locales are produced by an automated translation pipeline, not authored directly. - **Grounded in uploaded documents** — The tutor and outline planner only ground in documents uploaded to the specific project. - **Scope enforced at every surface** — Role-based access is enforced identically in the UI, tRPC API, and MCP endpoint. - **Long-running builds are async** — A Studio build can take several minutes. Agents are expected to poll `get_studio_build_status`. - **Edit mode is only for finished projects** — `open_studio_project_for_edit` is rejected while a build is still `queued` or `running`. - **No public self-serve signup in staging** — `staging.vidext.com` is an internal staging environment. Production self-serve signup is at `https://vidext.io`. ## Integrations ### Model Context Protocol (MCP) - Endpoint: `https://staging.vidext.com/api/mcp/studio` - Transport: streamable-http - Protocol version: `2025-06-18` - Auth: OAuth 2.1 authorization-code + PKCE, with dynamic client registration - Discovery: [/.well-known/mcp](https://staging.vidext.com/.well-known/mcp) - OAuth discovery: [/.well-known/oauth-authorization-server](https://staging.vidext.com/.well-known/oauth-authorization-server) - Protected resource metadata: [/.well-known/oauth-protected-resource](https://staging.vidext.com/.well-known/oauth-protected-resource) - Developer guide: [/developers](https://staging.vidext.com/developers) - OpenAPI: [/openapi.json](https://staging.vidext.com/openapi.json) - API catalog: [/.well-known/api-catalog](https://staging.vidext.com/.well-known/api-catalog) - Registry server metadata: [/server.json](https://staging.vidext.com/server.json) Add to Claude Code: ```bash claude mcp add --transport http vidext-studio https://staging.vidext.com/api/mcp/studio ``` For Claude.ai (web, Desktop, iOS, Android), add as a Custom Connector in Settings → Connectors with the same URL; it syncs across platforms. ### MCP Tools - `list_studio_projects` — STEP 1 (DISCOVERY) — List the Vidext Studio projects the user already has access to. Use this tool first whenever the user refers to continuing, editing, finding, opening, or iterating on an existing course/project. Returns projects ordered by most-recently-updated. - `list_studio_courses` — COURSE DISCOVERY — List the multi-module Vidext Studio courses the user already has access to. Use this tool first whenever the user refers to continuing, editing, finding, opening, or monitoring an existing course-level workflow. Returns courses ordered by most-recently-updated with active module counts. - `get_studio_course_status` — COURSE STATUS — Fetch a course and aggregate each ordered module's Studio planner/builder state into stable status values: pending, running, ready, or failed. Use this after list_studio_courses or start_studio_course_planning to monitor a multi-module course without polling modules one by one. - `draft_studio_outline` — PLAN-ONLY — Start outline generation for a Vidext Studio course from a single prompt, without running the content builder. Use this when the user wants to plan, draft, preview, sketch, or review the structure before committing to a full build. Returns immediately with projectId, plannerRunId, awaitingOutline=true, and build-context readiness; poll get_studio_outline_status until outlineReady is true. Idempotent: when called with a projectId whose outline run is already in flight, returns kind="in_progress" with the existing plannerRunId instead of starting a new run. When a fresh run is started, returns kind="started". - `start_studio_build` — FULL PIPELINE — Create/build/generate a complete Vidext Studio course and keep the request open until the outline is ready, the plan is approved, and the builder reaches completed or failed. Use this when the user asks to create, build, generate, make, produce, or ship a course. - `create_studio_document_uploads` — DOCUMENT UPLOAD STEP 1 — Create pending Studio document records and presigned R2 upload URLs for local files. After uploading each file directly to its uploadUrl with the returned requiredHeaders, call complete_studio_document_uploads. - `complete_studio_document_uploads` — DOCUMENT UPLOAD STEP 2 — Complete pending Studio document uploads after files have been PUT to the uploadUrl returned by create_studio_document_uploads. Verifies each object in R2, enqueues document processing, and optionally starts a Studio draft/build using the completed documentIds. - `start_studio_course_planning` — COURSE PLANNING PIPELINE STEP 1 — Create a source-grounded course-level curriculum and ordered project module shells for review. Does not start module planners until confirm_studio_course_structure is called. - `confirm_studio_course_structure` — COURSE PLANNING PIPELINE STEP 2 — Confirm the reviewed course structure and start each module's Studio planner. Module planners receive already-imported source documents and skip prompt URL import. - `approve_studio_plan` — FULL PIPELINE STEP 2 — Call the planner's approve_plan tool to approve the current outline and start the builder. Returns builderRunId on success. If the response is a retryable build-context error, wait briefly and retry approve_studio_plan with the same projectId. - `get_studio_outline_status` — POLL — Fetch the latest planner outline status for a project after draft_studio_outline or module planner startup returns awaitingOutline=true. Use this to check phase, outlineReady, plannerRunId, isOutlineBuilding, and outlineError without rerunning outline generation. - `open_studio_project_for_edit` — EDIT MODE — Reopen an existing finished Vidext Studio project into planner outline phase so it can be edited through MCP. Use this before changing a previously built course. - `edit_studio_outline` — EDIT MODE — Apply concrete editing instructions to the current outline of an existing Vidext Studio project. Use after open_studio_project_for_edit or when the project is already in outline phase. When applying one of the returned outlineSuggestions, pass its id as appliedSuggestionId so the planner can keep the remaining suggestions and mark the chosen one applied. The response includes a diffSummary describing which chapters were added, removed, or modified by this single edit so callers can detect when an unrelated chapter changed. - `edit_studio_project_content` — FINISHED CONTENT EDITOR — Apply direct, validated edits to the published Studio course.json snapshot. Use this for concrete text edits, quiz edits, image src URL replacements using already-uploaded/provided media URLs, adding/removing/reordering/moving scenes, changing scene layouts, or regenerating current narration/audio/avatar media for a scene in an already-built course without reopening planner state. Committed edits synthesize narration audio for touched scenes and generate avatar video for touched avatar-driven scenes only. - `rebuild_studio_project` — EDIT MODE — Start a new builder run from the current editable outline of an existing Vidext Studio project, without regenerating the outline from the original prompt. Use this after editing a finished course. - `get_studio_build_status` — POLL — Fetch the latest build state for a project. If approve_studio_plan or rebuild_studio_project returned builderRunId, pass it to fetch that exact run. If no builderRunId was returned, pass projectId only to inspect whether the build is not_started or handoff_failed. Call repeatedly until builderState.status becomes completed or failed. When status is failed, also check builderState.retryable: true means transient infrastructure and false means the failure is genuine. - `connector_search` — CONNECTOR SEARCH — Search connected external knowledge sources such as Google Drive, Microsoft Teams, and Notion. Use this when the user asks to gather source material from a connected provider. Returns sanitized item metadata only; call connector_read with an item's externalId to retrieve content. - `connector_read` — CONNECTOR READ — Read content from one connected external connector item by provider and external id. Use connector_search first to discover item ids. ### Recommended MCP Flows - **Create a new course** — call `start_studio_build` and wait for its terminal `buildStatus`. - **Resume an existing multi-module course** — call `list_studio_courses` first, then `get_studio_course_status` to inspect ordered module progress. - **Plan without building** — call `draft_studio_outline` when the client only needs the outline and planner state. - **Edit a finished course** — call `edit_studio_project_content` for direct published-content edits. Use `open_studio_project_for_edit`, `edit_studio_outline`, and `rebuild_studio_project` only when the requested change restructures the source outline rather than the built course. - **Resume existing single-project work** — call `list_studio_projects` first and continue with either the planning flow or the edit-mode flow. ## API Reference - [Studio MCP server](https://staging.vidext.com/api/mcp/studio): remote HTTP MCP endpoint exposing Studio tools over streamable-http. - [MCP discovery](https://staging.vidext.com/.well-known/mcp): discovery JSON pointing to the Studio MCP server, transport, OAuth discovery, and tool list. - [MCP server card](https://staging.vidext.com/.well-known/mcp/server-card.json): pre-connection MCP server metadata describing authentication, resources, and tools. - [Developer guide](https://staging.vidext.com/developers): public onboarding, rate-limit, and error-handling documentation for agent clients. - [OpenAPI](https://staging.vidext.com/openapi.json): machine-readable discovery, OAuth, and MCP transport contract. - [API catalog](https://staging.vidext.com/.well-known/api-catalog): RFC 9727 Linkset catalog of public API and discovery endpoints. - [Registry server metadata](https://staging.vidext.com/server.json): MCP registry-ready server definition with branding, repository, and remote transport metadata. - [OAuth authorization endpoint](https://staging.vidext.com/api/auth/mcp/authorize): start of the OAuth 2.1 code + PKCE flow. - [OAuth token endpoint](https://staging.vidext.com/api/auth/mcp/token): exchanges authorization codes for access tokens. - [OAuth dynamic client registration](https://staging.vidext.com/api/auth/mcp/register): endpoint for clients without pre-registered credentials. ## Pricing - Pricing on staging is informational only; this environment is used for internal validation. - Current in-product plan shapes reference a **Free** tier, a **Pro / Growth** tier, and an **Enterprise** tier. - Public production overview: [https://vidext.io](https://vidext.io) - Machine-readable pricing summary: [/pricing.md](https://staging.vidext.com/pricing.md) ## Links - [Website](https://vidext.io) - [App root](https://staging.vidext.com) - [Studio MCP endpoint](https://staging.vidext.com/api/mcp/studio) - [Homepage markdown](https://staging.vidext.com/index.md) - [Agent instructions](https://staging.vidext.com/agents.md) ## Operational Guidance - Start with `list_studio_courses` when the user refers to an existing multi-module course, and `list_studio_projects` when they refer to a single project/module. - Use `draft_studio_outline` for planning-only flows. - Use `start_studio_build` to create a complete course end-to-end; it waits through outline readiness, approval, and terminal build status. - To edit a finished course, call `edit_studio_project_content` for direct published-content edits. Reopen the outline and rebuild only when the user asks to restructure the underlying course plan. - If you receive a `401`, inspect the `WWW-Authenticate` header and follow the OAuth 2.1 discovery flow instead of retrying with ad hoc credentials. - If you receive a `429`, back off and retry later. Public and protected HTTP surfaces are rate limited per IP. ## Tool Surface Reference ### list_studio_projects STEP 1 (DISCOVERY) — List the Vidext Studio projects the user already has access to. Use this tool first whenever the user refers to continuing, editing, finding, opening, or iterating on an existing course/project. Returns projects ordered by most-recently-updated. - Title: List Studio projects - Read only: yes - Destructive: no - Idempotent: yes ### list_studio_courses COURSE DISCOVERY — List the multi-module Vidext Studio courses the user already has access to. Use this tool first whenever the user refers to continuing, editing, finding, opening, or monitoring an existing course-level workflow. Returns courses ordered by most-recently-updated with active module counts. - Title: List Studio courses - Read only: yes - Destructive: no - Idempotent: yes ### get_studio_course_status COURSE STATUS — Fetch a course and aggregate each ordered module's Studio planner/builder state into stable status values: pending, running, ready, or failed. Use this after list_studio_courses or start_studio_course_planning to monitor a multi-module course without polling modules one by one. - Title: Get Studio course status - Read only: yes - Destructive: no - Idempotent: yes ### draft_studio_outline PLAN-ONLY — Start outline generation for a Vidext Studio course from a single prompt, without running the content builder. Use this when the user wants to plan, draft, preview, sketch, or review the structure before committing to a full build. Returns immediately with projectId, plannerRunId, awaitingOutline=true, and build-context readiness; poll get_studio_outline_status until outlineReady is true. Idempotent: when called with a projectId whose outline run is already in flight, returns kind="in_progress" with the existing plannerRunId instead of starting a new run. When a fresh run is started, returns kind="started". - Title: Draft Studio outline - Read only: no - Destructive: no - Idempotent: yes ### start_studio_build FULL PIPELINE — Create/build/generate a complete Vidext Studio course and keep the request open until the outline is ready, the plan is approved, and the builder reaches completed or failed. Use this when the user asks to create, build, generate, make, produce, or ship a course. - Title: Start Studio build - Read only: no - Destructive: no - Idempotent: no ### create_studio_document_uploads DOCUMENT UPLOAD STEP 1 — Create pending Studio document records and presigned R2 upload URLs for local files. After uploading each file directly to its uploadUrl with the returned requiredHeaders, call complete_studio_document_uploads. - Title: Create Studio document uploads - Read only: no - Destructive: no - Idempotent: no ### complete_studio_document_uploads DOCUMENT UPLOAD STEP 2 — Complete pending Studio document uploads after files have been PUT to the uploadUrl returned by create_studio_document_uploads. Verifies each object in R2, enqueues document processing, and optionally starts a Studio draft/build using the completed documentIds. - Title: Complete Studio document uploads - Read only: no - Destructive: no - Idempotent: no ### start_studio_course_planning COURSE PLANNING PIPELINE STEP 1 — Create a source-grounded course-level curriculum and ordered project module shells for review. Does not start module planners until confirm_studio_course_structure is called. - Title: Start Studio course planning - Read only: no - Destructive: no - Idempotent: no ### confirm_studio_course_structure COURSE PLANNING PIPELINE STEP 2 — Confirm the reviewed course structure and start each module's Studio planner. Module planners receive already-imported source documents and skip prompt URL import. - Title: Confirm Studio course structure - Read only: no - Destructive: no - Idempotent: no ### approve_studio_plan FULL PIPELINE STEP 2 — Call the planner's approve_plan tool to approve the current outline and start the builder. Returns builderRunId on success. If the response is a retryable build-context error, wait briefly and retry approve_studio_plan with the same projectId. - Title: Approve Studio plan - Read only: no - Destructive: no - Idempotent: yes ### get_studio_outline_status POLL — Fetch the latest planner outline status for a project after draft_studio_outline or module planner startup returns awaitingOutline=true. Use this to check phase, outlineReady, plannerRunId, isOutlineBuilding, and outlineError without rerunning outline generation. - Title: Get Studio outline status - Read only: yes - Destructive: no - Idempotent: yes ### open_studio_project_for_edit EDIT MODE — Reopen an existing finished Vidext Studio project into planner outline phase so it can be edited through MCP. Use this before changing a previously built course. - Title: Open Studio project for edit - Read only: no - Destructive: no - Idempotent: yes ### edit_studio_outline EDIT MODE — Apply concrete editing instructions to the current outline of an existing Vidext Studio project. Use after open_studio_project_for_edit or when the project is already in outline phase. When applying one of the returned outlineSuggestions, pass its id as appliedSuggestionId so the planner can keep the remaining suggestions and mark the chosen one applied. The response includes a diffSummary describing which chapters were added, removed, or modified by this single edit so callers can detect when an unrelated chapter changed. - Title: Edit Studio outline - Read only: no - Destructive: no - Idempotent: no ### edit_studio_project_content FINISHED CONTENT EDITOR — Apply direct, validated edits to the published Studio course.json snapshot. Use this for concrete text edits, quiz edits, image src URL replacements using already-uploaded/provided media URLs, adding/removing/reordering/moving scenes, changing scene layouts, or regenerating current narration/audio/avatar media for a scene in an already-built course without reopening planner state. Committed edits synthesize narration audio for touched scenes and generate avatar video for touched avatar-driven scenes only. - Title: Edit Studio project content - Read only: no - Destructive: no - Idempotent: no ### rebuild_studio_project EDIT MODE — Start a new builder run from the current editable outline of an existing Vidext Studio project, without regenerating the outline from the original prompt. Use this after editing a finished course. - Title: Rebuild Studio project - Read only: no - Destructive: no - Idempotent: no ### get_studio_build_status POLL — Fetch the latest build state for a project. If approve_studio_plan or rebuild_studio_project returned builderRunId, pass it to fetch that exact run. If no builderRunId was returned, pass projectId only to inspect whether the build is not_started or handoff_failed. Call repeatedly until builderState.status becomes completed or failed. When status is failed, also check builderState.retryable: true means transient infrastructure and false means the failure is genuine. - Title: Get Studio build status - Read only: yes - Destructive: no - Idempotent: yes ### connector_search CONNECTOR SEARCH — Search connected external knowledge sources such as Google Drive, Microsoft Teams, and Notion. Use this when the user asks to gather source material from a connected provider. Returns sanitized item metadata only; call connector_read with an item's externalId to retrieve content. - Title: Search connected connector - Read only: yes - Destructive: no - Idempotent: yes ### connector_read CONNECTOR READ — Read content from one connected external connector item by provider and external id. Use connector_search first to discover item ids. - Title: Read connected connector item - Read only: yes - Destructive: no - Idempotent: yes ## Authentication Reference - Authorization endpoint: https://staging.vidext.com/api/auth/mcp/authorize - Token endpoint: https://staging.vidext.com/api/auth/mcp/token - Userinfo endpoint: https://staging.vidext.com/api/auth/mcp/userinfo - JWKS endpoint: https://staging.vidext.com/api/auth/mcp/jwks - Dynamic client registration: https://staging.vidext.com/api/auth/mcp/register ## Compatibility Notes - Claude, ChatGPT, Cursor, and other MCP-capable clients should use the same streamable-http endpoint. - The MCP endpoint returns a JSON-RPC unauthorized error plus a `WWW-Authenticate` header when no token is provided. - The root experience is sign-in-first, but machine-readable resources are public so agents can understand the product before auth.