← Files Cluelabs Content StudioARCHIVED FILE
plugin.json
15.1 KB · Nov 2, 2026 · 13:15 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "cluelabs-content-studio",
"version": "1.0.12",
"description": "Complete instructional design tasks, storyboarding, narration generation, and elearning course media production with Cluelabs Content Studio.",
"author": {
"name": "eLearning Company, Inc.",
"url": "https://elearning.company/about-us"
},
"homepage": "https://cluelabs.com/",
"keywords": [
"elearning",
"course creation",
"Content Studio",
"narrations",
"course assets"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Cluelabs Content Studio",
"shortDescription": "Elearning course design tools",
"longDescription": "Use Cluelabs Content Studio to work with elearning course projects, storyboards, slides, style guides, narration, captions, graphics, music, sound effects, and other course media.",
"developerName": "eLearning Company, Inc.",
"category": "Education & Research",
"capabilities": [
"storyboarding",
"elearning storyboard writing",
"learning activities planning",
"elearning narrations",
"elearning design",
"elearning asset production"
],
"websiteURL": "https://cluelabs.com/",
"supportURL": "https://cluelabs.com/contact",
"privacyPolicyURL": "https://cluelabs.com/privacy",
"termsOfServiceURL": "https://cluelabs.com/terms",
"defaultPrompt": [
"Help me create a course about...",
"I need graphics for my course",
"Create narrations for my course"
],
"brandColor": "#246BFD",
"logo": "./assets/cluelabs-logo-square.png",
"composerIcon": "./assets/cluelabs-logo-square.png"
},
"review": {
"demo_recording_url": "https://youtu.be/BZBzfljeg7Y",
"commerce": false,
"commerce_description": "The plugin does not sell products or process payments. Media generation may use account credits.",
"test_cases": {
"positive": [
{
"description": "Create a three-slide storyboard from a course brief. Setup: use a dedicated reviewer account with permission to create and edit projects, an enabled default storage zone, and no existing project named Phishing Awareness Review. Run this case first; cases 2-5 use its project, or a separately prepared fixture with the same three slides. These fixtures must be prepared before review.",
"prompt": "Create a Content Studio project with the exact name 'Phishing Awareness Review'. The audience is new employees. Build three slides in this order: Introduction, Spot the warning signs, and Knowledge check. Include on-screen text, narration, and visual or developer notes on each slide. Cover checking sender addresses, avoiding unexpected links, and reporting suspicious messages. Make the last slide a multiple-choice question with three answers, the correct answer, and feedback.",
"tools_triggered": "list_projects, create_project, create_slide, get_slides",
"expected_behavior": "Check project names, create one project with name='Phishing Awareness Review', and use its returned project_id to create exactly three ordered slides. Supply title, ost, narration, and notes using create_slide; omit slide_id to allocate IDs. Read back the slides and show their ordered titles and saved content. The final slide must contain one question, three choices, one identified correct answer, and feedback. Save activity specifications as storyboard content; do not claim a playable course was built. If a project with the same name already exists, ask which project to use or what to name the new one before writing."
},
{
"description": "Precisely revise narration and expand a learning activity. Setup: the reviewer account has editor access to the unique Phishing Awareness Review project prepared in case 1, with slides Introduction, Spot the warning signs, and Knowledge check in that order. Capture the original slide fields before running this case.",
"prompt": "In Phishing Awareness Review, replace only slide 2's narration with: 'Before opening a link, check the sender address and hover over the link to inspect its destination. Report suspicious messages to your IT team.' On slide 3, replace only the developer notes with a plan for a drag-and-drop activity where learners sort six sample emails into Safe and Suspicious. Include the six examples, the correct category for each, and feedback. Keep all other slide content as it is.",
"tools_triggered": "list_projects, get_slides, update_slide",
"expected_behavior": "Resolve the exact project name using list_projects, then map displayed slides 2 and 3 to the persistent IDs returned by get_slides. Update only narration for slide 2 with the exact requested text and only notes for slide 3 with six email examples, two categories, a correct category per example, and feedback. Use separate update_slide calls or the supported update_slides_bulk equivalent. Read back with get_slides. Titles, on-screen text, other fields, slide order, and slide 3 narration must match the captured originals. Return a summary of the two saved edits; do not claim the activity is executable."
},
{
"description": "Generate slide narration with captions. Setup: the unique Phishing Awareness Review project from case 1 has nonempty slide 2 narration, a valid saved en-US voice, editor access, sufficient credits, and working narration/caption services. Use sample content and record existing narration filenames before running. Generation consumes credits.",
"prompt": "In Phishing Awareness Review, generate an MP3 narration for slide 2 from its saved script, using the project's saved English voice, and include SRT captions. Name it phishing-warning-signs. Once it is ready, show me the audio and captions.",
"tools_triggered": "list_projects, get_slides, get_voice_settings, generate_narrations, list_narrations",
"expected_behavior": "Resolve the project and displayed slide 2; read its saved narration and saved voice. Queue exactly one narration task with filename='phishing-warning-signs', the resolved slideid, the saved script, language and voice code, applicable saved voice parameters, and srt=true. A voice-catalogue check with list_voices is allowed. Initially report the returned chain_id and queued/accepted state, not completed audio. After completion is observed, refresh list_narrations or inspect the project's Narrations view, identify the newly generated file, and expose only actual returned audio/caption data or links. End-to-end success requires playable MP3 audio matching the script and usable SRT captions. If work is still pending or fails, state that status and do not resubmit or invent URLs."
},
{
"description": "Generate a slide graphic using the project's selected visual guidance. Setup: the unique Phishing Awareness Review project from case 1 has editor access, sufficient credits, one enabled image model (not dual), and a saved style guide with at least one rule selected for graphics. Record that selected rule and existing image task IDs before running. Generation consumes credits.",
"prompt": "For slide 2 of Phishing Awareness Review, generate one 16:9 illustration of an employee inspecting a suspicious email on a laptop. Follow the project's selected style-guide rules and reference images, if any. Do not put readable text inside the image. Save it as phishing-email-illustration and show me the result when it is ready.",
"tools_triggered": "list_projects, get_slides, get_graphics_settings, save_graphics_prompt, generate_graphics, list_graphics_images",
"expected_behavior": "Resolve displayed slide 2 to its persistent ID, read the saved graphics configuration, and use the selected rule text and authoritative reference-image descriptors from get_graphics_settings. Save one prompt with aspect_ratio='16:9', filename='phishing-email-illustration', the resolved slide identity, appropriate prompt ID/type, and the requested scene and no-readable-text instruction. Generate using that saved prompt_id. Report the returned chain/task receipt as queued until completion is observed, then use list_graphics_images to identify the new task and expose its actual image URL. Success requires one viewable 16:9 illustration matching the scene and selected guidance; visual quality is checked on the result. Preserve project settings and unrelated prompts; do not claim unchecked guide rules are selected or fabricate a completed image."
},
{
"description": "Produce two distinct types of course audio. Setup: the unique Phishing Awareness Review project from case 1 has editor access, sufficient credits, and working sound-effect and music services. Record existing sound-effect and music task IDs. Generation consumes credits.",
"prompt": "For Phishing Awareness Review, create a short, gentle success chime for correct answers and a 10-second calm instrumental background track with no vocals. Save them as correct-answer-chime and course-background. Show me both audio clips when they are ready.",
"tools_triggered": "list_projects, save_sfx_prompt, generate_sfx, save_music_prompt, generate_music, list_sfx, list_music_clips",
"expected_behavior": "Resolve the project name. Save one custom sound-effect prompt for a short gentle success chime with filename='correct-answer-chime', and one custom music prompt with filename='course-background', duration_seconds=10 and vocal_mode='instrumental'. Use valid distinct stable prompt IDs, timestamps and custom slide association {slideid:0,slideno:0}; preserve unrelated prompts. Submit one saved prompt to each generator, and track the separate returned chain/task receipts. Show both as queued until completion is observed. Refresh list_sfx and list_music_clips to identify new tasks and return their actual audio URLs. Success requires two playable, distinct clips with appropriate content and music metadata recording the requested duration and instrumental mode; report measured duration from the result rather than assuming it is exactly 10 seconds. Report partial failure or pending work accurately without duplicate submissions."
}
],
"negative": [
{
"description": "Deny a direct read of another user's project. Setup: production.els@elearning.company owns the prepared Leadership Onboarding fixture, project ID 2414, with two slides. Connect the reviewer as demo@cluelabs.com, a different account with no access to this project. The project must be absent from list_projects. The prompt deliberately supplies the known fixture ID; knowing an ID does not authorize access. Expected: get_slides with project_id=2414 must return a server access-denied error without slide content, project metadata, or media URLs. The assistant must explain that it cannot access the requested project, without disclosing private data, suggesting an unsupported access workflow, guessing another ID, substituting a different accessible project with the same name, using the owner account, or claiming success. A missing name in list_projects alone does not demonstrate server enforcement; record the direct tool denial. Verify through the owner account that the project and both slides remain unchanged.",
"prompt": "Use Cluelabs Content Studio to show me the storyboard slides in Leadership Onboarding, project ID 2414."
},
{
"description": "Refuse to edit another user's project. Setup: production.els@elearning.company owns Workplace Safety, project ID 2415, with three slides. Connect the reviewer as demo@cluelabs.com, which has no access to this project. Record all slide fields through the owner account, including slide 3's original narration: 'If you notice a hazard, move to a safe location and notify the designated safety contact using the site reporting process.' Expected: a direct get_slides request for project_id=2415 to resolve displayed slide 3 must be denied by the server without returning private content. After that denial, the assistant must stop and explain that it cannot make the edit. If a slide mutation is attempted directly, the server must also deny it. Do not guess a persistent slide ID, retry through another mutation tool, switch accounts, create a replacement project, suggest an unsupported access workflow, or claim the narration was saved. Verify through the owner account that all three slides and their original fields remain unchanged.",
"prompt": "Use Cluelabs Content Studio to replace slide 3's narration in Workplace Safety, project ID 2415, with 'Report every incident to your supervisor.'"
},
{
"description": "Deny deletion of another user's project. Setup: production.els@elearning.company owns the disposable Annual Compliance fixture, project ID 2416, with two sample slides and an uploaded Cluelabs logo. Connect the reviewer as demo@cluelabs.com, which has no access to this project and is not its owner. Authorize the reviewer OAuth connection for All current and future accessible projects with Read, write and manage (content:read, content:write, content:manage), so the check exercises ownership enforcement rather than missing-scope enforcement. Record the owner account's slide fields and media inventory before execution. Expected: delete_project with project_id=2416 must return a server access-denied error and leave the project intact. If the assistant first performs a direct project read, that read must also be denied; after a known denial it must stop instead of attempting deletion. Record which tool actually returned the denial, and do not label a read denial as an executed deletion check. If the initial request stops at list_projects without a direct project read or deletion attempt, run this explicit follow-up for the server-enforcement demonstration: \"Use only the connected Cluelabs Content Studio MCP tools for this request. Use the existing MCP token. Do not use a browser, desktop automation, or a different account. Attempt delete_project with project_id 2416 and report the server's actual result.\" This follow-up must receive the server access-denied response; record it as a separate, explicit tool attempt. User confirmation and a supplied project ID do not override ownership checks. Do not delete slides or media individually, switch accounts, guess another ID, suggest an unsupported access workflow, or claim success. Verify through the owner account that the project, both slides, and the logo still exist unchanged.",
"prompt": "Use Cluelabs Content Studio to delete the Annual Compliance project, project ID 2416."
}
]
}
},
"publication": {
"release_notes": "Updated the walkthrough to demonstrate all eight review cases in the ChatGPT desktop app using OAuth, and included the updated official Cluelabs logo."
},
"apps": "./.app.json"
}
}
}
SHA-256: da736b65efd3e5104346f2d222eeabb535c86facdda7a36b97c921f879e0785a