{"name":"Vidext","title":"Vidext — Agent-driven training production for frontline teams","description":"Vidext's agents turn the documents and procedures your company already has into training for your frontline teams, grounded in your own material.","url":"https://app.vidext.io/sign-in","website":"https://vidext.io","documentation":"https://app.vidext.io/llms.txt","fullDocumentation":"https://app.vidext.io/llms-full.txt","mcp":{"name":"Vidext","description":"Vidext exposes organization-scoped knowledge and module reads, and a conversation with the Vidext author that plans and builds modules, through one MCP endpoint.","endpoint":"https://app.vidext.io/api/mcp","transport":"streamable-http","protocolVersion":"2026-07-28","serverCard":"https://app.vidext.io/.well-known/mcp/server-card.json"},"auth":{"type":"oauth2","authorizationServer":"https://app.vidext.io/.well-known/oauth-authorization-server","protectedResource":"https://app.vidext.io/.well-known/oauth-protected-resource"},"tools":[{"name":"search_knowledge","title":"Search Organization Knowledge","description":"Search the authenticated organization's profile, its source registry (the files and links added to it), and their processed content. Returns ranked excerpts and opaque handles for read_knowledge_source."},{"name":"read_knowledge_source","title":"Read Organization Knowledge Source","description":"Read a bounded slice from an opaque source handle returned by search_knowledge. Arbitrary paths and stale or forged handles are rejected and organization authorization is checked again."},{"name":"list_modules","title":"List Modules","description":"List modules the authenticated user can access in the selected organization, ordered by most recently updated. Use search to narrow by module name."},{"name":"author_send","title":"Message the Vidext author","description":"Sends the person's message to the Vidext author, the agent that plans and builds learning modules in their Vidext workspace and hands units to crafter agents, with the files named in upload_ids attached. Without conversation_id it opens a new conversation. Waits up to wait_seconds for the author's next message, a question for the person, or the end of its work. Returns the author's latest reply, its open questions with their options, its agents at work, the modules it built with a preview link for each prepared one, the status, a cursor for author_updates, and a link that opens the conversation in Vidext. The author keeps working after the call returns."},{"name":"author_upload","title":"Upload a file for the Vidext author","description":"Opens the upload of one file the person attaches for the Vidext author, in conversation_id or, without one, in a new conversation. Returns the conversation_id, an upload_id, and a short-lived URL that takes the file's bytes in one PUT with the given headers. Once the file is PUT, author_send with upload_ids attaches it to a message, before upload.expires_at; an upload not attached by then expires, and the file needs a new upload. Vidext reads the file once it is attached. Accepted extensions: .pdf, .txt, .md, .markdown, .html, .htm, .json, .xml, .yaml, .yml, .csv, .rtf, .vtt, .srt, .docx, .pptx, .xlsx, .png, .jpg, .jpeg, .webp, .gif, .js, .jsx, .ts, .tsx, .py, .go, .rs, .java, .rb, .sh, .css, .sql, .toml, .mp3, .wav, .ogg, .m4a, .flac, .webm, .mp4, .m4v, .mov. At most 50 MB for a document or image, 25 MB for audio, 500 MB for video."},{"name":"author_attach_files","title":"Attach ChatGPT files for the Vidext author","description":"Uploads for the Vidext author the files the person attached in ChatGPT, and only those: ChatGPT itself fills files through openai/fileParams, each with a download_url on its own file host. A file on disk, a local path or a file:// URL is never one of them; author_upload and its PUT upload it. Vidext downloads each file from ChatGPT's file host and refuses any other URL, into conversation_id or, without one, a new conversation. Returns the conversation_id, an upload_id for each file stored, which author_send's upload_ids attaches to a message before its expires_at, and the reason for each file not stored. Vidext reads a file once it is attached. Accepted extensions: .pdf, .txt, .md, .markdown, .html, .htm, .json, .xml, .yaml, .yml, .csv, .rtf, .vtt, .srt, .docx, .pptx, .xlsx, .png, .jpg, .jpeg, .webp, .gif, .js, .jsx, .ts, .tsx, .py, .go, .rs, .java, .rb, .sh, .css, .sql, .toml, .mp3, .wav, .ogg, .m4a, .flac, .webm, .mp4, .m4v, .mov. At most 50 MB for a document or image, 25 MB for audio, 500 MB for video."},{"name":"author_answer","title":"Answer the Vidext author","description":"Answers one of the author's open questions with exactly one of: the labels of the options the person chose, their own words in text, or dismiss: true when they put it off. Waits like author_send. Returns the author's latest reply, its open questions with their options, its agents at work, the modules it built with a preview link for each prepared one, the status, a cursor for author_updates, and a link that opens the conversation in Vidext. Refused when the question was already answered elsewhere, has expired, or is not open."},{"name":"author_updates","title":"Read Vidext author updates","description":"Reads what happened in a conversation with the author since cursor: new messages, open questions, agents at work and status. When nothing has changed and the author is still working, waits up to wait_seconds for something to. Without cursor it reads from the start and returns the latest reply and the last few messages. Returns the author's latest reply, its open questions with their options, its agents at work, the modules it built with a preview link for each prepared one, the status, a cursor for author_updates, and a link that opens the conversation in Vidext."},{"name":"author_stop","title":"Stop the Vidext author","description":"Stops the author in one conversation: scope turn stops its current turn, scope all also stops every crafter and other agent it started. What the author already saved stays saved, and stopping a conversation where nothing runs changes nothing. Returns where the conversation stands afterwards."},{"name":"list_conversations","title":"List Vidext author conversations","description":"Lists the person's conversations with the Vidext author in this workspace, most recently active first, each with its conversation_id, title, last activity and a link that opens it in Vidext. query narrows them by title."},{"name":"list_units","title":"List a course's units","description":"Lists every unit of the courses the author built in one conversation, in course order: its unit_id for the other unit tools, its title and course, its crafter's state (running, ended, resting or none, with its stage and whom its run answers), its module with a preview link once a version is prepared, and whether it accepts unit messages now, with why not. Empty until the author builds a course."},{"name":"unit_send","title":"Message a unit's crafter","description":"Sends a message to the module crafter of one unit, the agent that writes that unit's module, and starts it again when it waits. A unit message is written for the person and reaches only that unit's crafter: it cannot change the course, its order or other units, and it never answers the author's questions. Returns how the message was delivered, then waits up to wait_seconds for the crafter's reply or the end of its run. Returns the crafter's latest reply and the other new messages on the unit, the crafter's state, the unit's module with a preview link once a version is prepared, the status, a cursor for unit_updates, and a link that opens the conversation in Vidext. The crafter keeps working after the call returns."},{"name":"unit_updates","title":"Read a unit's updates","description":"Reads what happened on one unit since cursor: the crafter's messages and the others on the unit, the crafter's state and the module's. When nothing has changed and the crafter is still working or the module is building, waits up to wait_seconds for something to. Without cursor it reads the unit's newest crafter from its start. Returns the crafter's latest reply and the other new messages on the unit, the crafter's state, the unit's module with a preview link once a version is prepared, the status, a cursor for unit_updates, and a link that opens the conversation in Vidext. crafter_changed says a newer crafter took the unit over."},{"name":"unit_build","title":"Build a unit's module","description":"Builds one unit's module from its script as it stands, as the build in Vidext does: the version is prepared minutes later, once its presenter videos are in, and unit_updates or list_units then carry its preview link. Returns at once, with the build that started or the one already on its way; a build that cannot start is refused with the reason. It never publishes the module."},{"name":"unit_script","title":"Read a unit's script","description":"Reads one unit's applied module script as the Vidext studio reads it, without a model turn. Returns every scene in order, including scenes without editable text, each editable text's stable address and current value, and stale layout markers. Refused with no_script while the unit has no applied module script yet, and refused when the conversation or unit is not the caller's or the script cannot be read. Repeating the call reads the current script."},{"name":"unit_set_text","title":"Set one text in a unit","description":"Sets one addressed text in a unit's module exactly, without a model turn, using the studio's text edit path. Returns the landed value or a refusal with its code. A current value different from from is refused as changed. A retry with the same idempotency_key and payload replays its first result; a different payload under that key conflicts."},{"name":"unit_stop","title":"Stop a unit's crafter","description":"Stops the run of one unit's crafter that unit_send started for this person. A run the author or the person started is theirs and keeps going, what the crafter already saved stays saved, and stopping when no such run is going changes nothing. Returns whether a run was stopped."}]}