{"$schema":"https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json","version":"1.0","name":"Vidext Studio","description":"Vidext Studio is an AI learning orchestrator exposed over MCP: turn a prompt into a structured learning path with outlines, narrated slides, and AI-generated imagery, grounded in the organization's own documents.","serverUrl":"https://staging.vidext.com/api/mcp/studio","protocolVersion":"2025-06-18","serverInfo":{"name":"vidext-studio-builder","title":"Vidext Studio","version":"0.1.0"},"iconUrl":"https://staging.vidext.com/icon.svg","category":"education","branding":{"name":"Vidext Studio","description":"Create document-grounded learning paths with Vidext Studio over remote MCP.","iconUrl":"https://staging.vidext.com/icon.svg","category":"education"},"documentationUrl":"https://staging.vidext.com/llms.txt","transport":{"type":"streamable-http","endpoint":"https://staging.vidext.com/api/mcp/studio"},"capabilities":{"resources":{},"tools":{}},"authentication":{"required":true,"schemes":["oauth2","bearer"],"authorizationServer":"https://staging.vidext.com/.well-known/oauth-authorization-server","protectedResource":"https://staging.vidext.com/.well-known/oauth-protected-resource"},"instructions":"For local document uploads, call create_studio_document_uploads, upload each file directly to the returned R2 uploadUrl with the returned requiredHeaders, then call complete_studio_document_uploads to verify, enqueue processing, and optionally start draft/build work. Use list_studio_courses first when the user refers to an existing multi-module course, then get_studio_course_status to inspect its module progress. Use list_studio_projects first when the user refers to an existing single project/module. Use draft_studio_outline for planning-only single-project flows. For one generated project, call start_studio_build once and wait for its final buildStatus; it keeps running through outline readiness, plan approval, and terminal builder status. For a whole multi-project course, call start_studio_course_planning; it creates the source-grounded course curriculum and ordered project module shells for review, but does not start module planners. Confirm the structure with the user, then call confirm_studio_course_structure to start each module planner. Use get_studio_outline_status only for draft/module planning flows that return before approval. To edit a finished course's published content directly, call edit_studio_project_content. To reopen a finished course into planner mode, call open_studio_project_for_edit, then edit_studio_outline, then rebuild_studio_project. Finished-content edits can replace existing image fields with already-uploaded image URLs, but this MCP server does not upload local image files itself. Every tool is scoped to the authenticated user's organization membership and project permissions.","resources":[{"name":"studio_ui","title":"Vidext Studio","uri":"ui://vidext-studio/project","description":"Interactive MCP Apps UI for Vidext Studio project, outline, and builder-run output.","mimeType":"text/html;profile=mcp-app"},{"name":"server_card","title":"Vidext Studio server card","uri":"mcp://server-card.json","description":"Static server card describing Vidext Studio capabilities, authentication, resources, and tools.","mimeType":"application/json"}],"tools":[{"name":"list_studio_projects","title":"List Studio projects","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"search":{"type":"string","minLength":1,"description":"Case-insensitive substring match against the project name. Pass this when the user names a specific project and leave it blank to return the most-recently-updated projects."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of projects to return. Keep the default unless the user explicitly asks to see more."},"includeTrash":{"type":"boolean","default":false,"description":"Include soft-deleted projects when true. Leave false unless the user explicitly asks for deleted or trashed work."}}},"annotations":{"title":"List Studio projects","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"list_studio_courses","title":"List Studio courses","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"search":{"type":"string","minLength":1,"description":"Case-insensitive substring match against the course name. Pass this when the user names a specific course and leave it blank to return the most-recently-updated courses."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of courses to return. Keep the default unless the user explicitly asks to see more."},"includeUnpublished":{"type":"boolean","default":false,"description":"Include unpublished courses when true. Leave false unless the user explicitly asks for unpublished work."}}},"annotations":{"title":"List Studio courses","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"get_studio_course_status","title":"Get Studio course status","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["courseId"],"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"courseId":{"type":"string","minLength":1,"description":"Course id returned by list_studio_courses or start_studio_course_planning."},"includeUnpublished":{"type":"boolean","default":false,"description":"Allow unpublished courses when true. Leave false unless the user explicitly asks for unpublished work."}}},"annotations":{"title":"Get Studio course status","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"draft_studio_outline","title":"Draft Studio outline","description":"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\".","inputSchema":{"type":"object","additionalProperties":false,"required":["prompt"],"properties":{"projectId":{"type":"string","minLength":1,"description":"Existing Vidext Studio project id to operate on. Omit it to let Vidext create a new project and return the createdProjectId for follow-up calls."},"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Display name for the project that will be auto-created when projectId is omitted. Ignored when projectId is supplied."},"prompt":{"type":"string","minLength":1,"description":"The course brief: topic, target audience, tone, and any concrete instructions. One to a few sentences is ideal."},"useCaseId":{"type":"string","minLength":1,"description":"Optional use-case id that steers outline generation toward a preset template. Leave blank to let the planner choose."}}},"annotations":{"title":"Draft Studio outline","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"start_studio_build","title":"Start Studio build","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["prompt"],"properties":{"projectId":{"type":"string","minLength":1,"description":"Existing Vidext Studio project id to operate on. Omit it to let Vidext create a new project and return the createdProjectId for follow-up calls."},"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Display name for the project that will be auto-created when projectId is omitted. Ignored when projectId is supplied."},"prompt":{"type":"string","minLength":1,"description":"The course brief: topic, target audience, tone, and any concrete instructions. One to a few sentences is ideal."},"useCaseId":{"type":"string","minLength":1,"description":"Optional use-case id that steers outline generation toward a preset template. Leave blank to let the planner choose."},"rebuildRetryLimit":{"type":"number","minimum":0,"maximum":3,"default":1,"description":"Number of automatic rebuild retries when the builder returns a retryable failed terminal state."}}},"annotations":{"title":"Start Studio build","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"create_studio_document_uploads","title":"Create Studio document uploads","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["files"],"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"projectId":{"type":"string","minLength":1,"description":"Optional Studio project id whose organization should own the uploaded documents. Project linking happens when complete_studio_document_uploads is called."},"files":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["filename","mimeType","fileSize"],"properties":{"filename":{"type":"string","minLength":1,"maxLength":255},"mimeType":{"type":"string","enum":["application/pdf","text/plain","text/markdown","text/x-markdown","text/csv","text/rtf","application/rtf","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","audio/mpeg","audio/wav","audio/ogg","audio/mp4","audio/webm","audio/flac"]},"fileSize":{"type":"number","exclusiveMinimum":0,"description":"File size in bytes. The server validates this before creating upload URLs and validates the actual R2 object size again on completion."},"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":500},"tags":{"type":"array","items":{"type":"string"}}}}}}},"annotations":{"title":"Create Studio document uploads","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"complete_studio_document_uploads","title":"Complete Studio document uploads","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["documentIds"],"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"projectId":{"type":"string","minLength":1,"description":"Optional Studio project id to attach uploaded documents to. Required implicitly for draft/build unless the tool creates a new project."},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Display name for the project auto-created when afterUpload starts Studio work and projectId is omitted."},"prompt":{"type":"string","minLength":1,"description":"Required when afterUpload is draft_outline or start_build. Used as the Studio course brief."},"useCaseId":{"type":"string","minLength":1,"description":"Optional use-case id for draft/build modes. Ignored for process_only."},"afterUpload":{"type":"string","enum":["process_only","draft_outline","start_build"],"default":"process_only","description":"Choose process_only to only enqueue documents, draft_outline to start a planner draft, or start_build to start the full Studio build flow."},"documentIds":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"string","format":"uuid"},"description":"Document ids returned by create_studio_document_uploads after their files have been uploaded to R2."}}},"annotations":{"title":"Complete Studio document uploads","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"start_studio_course_planning","title":"Start Studio course planning","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["prompt"],"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Display name for the new course container. Defaults to the generated curriculum title."},"prompt":{"type":"string","minLength":1,"description":"The whole-course brief. The orchestrator will split it into ordered project modules with non-overlapping concept and evaluation plans."},"useCaseId":{"type":"string","minLength":1,"description":"Optional use-case id shared by each generated project module."},"documentIds":{"type":"array","maxItems":50,"items":{"type":"string","format":"uuid"},"description":"Optional selected source document ids to ground the curriculum and pass through to each module planner."},"projectWikiContext":{"type":"string","minLength":1,"maxLength":12000,"description":"Optional project/wiki context to ground terminology and prerequisite ordering."},"researchContext":{"type":"string","minLength":1,"maxLength":12000,"description":"Optional research notes to allocate across modules before individual project planning starts."},"teamIds":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"string","format":"uuid"},"description":"Optional team ids to assign to the new course. Defaults to the same team resolution as single-project creation."}}},"annotations":{"title":"Start Studio course planning","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"confirm_studio_course_structure","title":"Confirm Studio course structure","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["courseId"],"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"courseId":{"type":"string","minLength":1,"description":"Course id returned by start_studio_course_planning after the structure has been reviewed and accepted."},"useCaseId":{"type":"string","minLength":1,"description":"Optional use-case id shared by each generated project module."}}},"annotations":{"title":"Confirm Studio course structure","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"approve_studio_plan","title":"Approve Studio plan","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","minLength":1,"description":"Existing Vidext Studio project id to approve for building. Required on the shared endpoint and optional only on the project-scoped endpoint."}}},"annotations":{"title":"Approve Studio plan","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"get_studio_outline_status","title":"Get Studio outline status","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","minLength":1,"description":"Existing Vidext Studio project id whose outline generation status should be fetched. Required on the shared endpoint and optional only on the project-scoped endpoint."}}},"annotations":{"title":"Get Studio outline status","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"open_studio_project_for_edit","title":"Open Studio project for edit","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","minLength":1,"description":"Existing Vidext Studio project id to reopen for editing. Required on the shared endpoint and optional only on the project-scoped endpoint."}}},"annotations":{"title":"Open Studio project for edit","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"edit_studio_outline","title":"Edit Studio outline","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["instructions"],"properties":{"projectId":{"type":"string","minLength":1,"description":"Existing Vidext Studio project id whose outline should be edited. Required on the shared endpoint and optional only on the project-scoped endpoint."},"instructions":{"type":"string","minLength":1,"description":"Concrete editing instructions for the current outline, such as adding, removing, renaming, or restructuring chapters and lessons."},"appliedSuggestionId":{"type":"string","minLength":1,"description":"Optional id of the outline suggestion being applied, for example outline-suggestion-3-front-load-the-core-problem. When present, the matching suggestion is marked applied and the rest stay available."}}},"annotations":{"title":"Edit Studio outline","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"edit_studio_project_content","title":"Edit Studio project content","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["instructions"],"properties":{"projectId":{"type":"string","minLength":1,"description":"Existing Vidext Studio project id whose published course.json should be edited. Required on the shared endpoint and optional only on the project-scoped endpoint."},"instructions":{"type":"string","minLength":1,"description":"Concrete finished-course editing instructions, such as changing scene text, quiz questions, replacing image src URLs with already-uploaded/provided media URLs, adding/removing/reordering/moving scenes, changing layouts, or regenerating current narration/audio/avatar media for a scene."},"dryRun":{"type":"boolean","default":false,"description":"When true, return normalized operations and a diff summary without writing course.json or backups."}}},"annotations":{"title":"Edit Studio project content","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"rebuild_studio_project","title":"Rebuild Studio project","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","minLength":1,"description":"Existing Vidext Studio project id to rebuild from its current editable outline. Required on the shared endpoint and optional only on the project-scoped endpoint."},"waitForCompletion":{"type":"boolean","default":false,"description":"When false, return immediately after the rebuild starts. When true, keep the request open until the rebuild reaches completed or failed."}}},"annotations":{"title":"Rebuild Studio project","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"get_studio_build_status","title":"Get Studio build status","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","minLength":1,"description":"Project id to inspect. Required on the shared endpoint and optional only on the project-scoped endpoint."},"builderRunId":{"type":"string","minLength":1,"description":"Optional builder run id returned by approve_studio_plan or rebuild_studio_project. When omitted, the tool uses the planner state's active builderRunId or reports that no build has started."}}},"annotations":{"title":"Get Studio build status","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"connector_search","title":"Search connected connector","description":"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.","inputSchema":{"type":"object","additionalProperties":false,"required":["provider","query"],"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"provider":{"type":"string","enum":["google_drive","microsoft_teams","notion"],"description":"Connected provider to query."},"query":{"type":"string","minLength":1,"description":"Search query for the connected source."},"limit":{"type":"integer","minimum":1,"maximum":20,"default":5,"description":"Maximum number of connector results to return."}}},"annotations":{"title":"Search connected connector","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}},{"name":"connector_read","title":"Read connected connector item","description":"CONNECTOR READ — Read content from one connected external connector item by provider and external id. Use connector_search first to discover item ids.","inputSchema":{"type":"object","additionalProperties":false,"required":["provider","externalId"],"properties":{"organizationId":{"type":"string","minLength":1,"description":"Optional organization id to scope the operation to. Usually omitted because Studio MCP OAuth tokens are scoped to the organization selected during authorization; pass it only to override that token scope for this call."},"provider":{"type":"string","enum":["google_drive","microsoft_teams","notion"],"description":"Connected provider to read from."},"externalId":{"type":"string","minLength":1,"description":"Provider item id returned by connector_search."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Maximum number of provider-specific content units to read."}}},"annotations":{"title":"Read connected connector item","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"_meta":{"ui":{"resourceUri":"ui://vidext-studio/project"}}}]}