← Files VoiceLabARCHIVED FILE
plugin.json
14.7 KB · Nov 3, 2026 · 18:55 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "voicelab",
"version": "1.0.4",
"description": "VoiceLab is an AI voice platform for text-to-speech, speech-to-text, dubbing, meeting notetaking, and voice agents. Turn text into natural speech, transcribe audio files, upload meeting recordings for transcripts and AI notes, remove background noise, and connect voice tools to agents via MCP. Audio can be provided as a file attached in ChatGPT, a public HTTPS link, or a small base64 payload.",
"author": {
"name": "VoiceLab",
"email": "elzodxon@gmail.com",
"url": "https://voicelab.uz"
},
"homepage": "https://voicelab.uz",
"repository": "https://github.com/voicelab-uz/mcp",
"license": "MIT",
"keywords": [
"speech",
"tts",
"stt",
"voice",
"uzbek",
"mcp"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "VoiceLab",
"shortDescription": "Voice AI in one platform",
"longDescription": "VoiceLab is an AI voice platform for text-to-speech, speech-to-text, dubbing, meeting notetaking, and voice agents. Turn text into natural speech, transcribe audio files, upload meeting recordings for transcripts and AI notes, remove background noise, and connect voice tools to agents via MCP. Audio can be provided as a file attached in ChatGPT, a public HTTPS link, or a small base64 payload.",
"developerName": "VoiceLab",
"category": "Developer Tools",
"capabilities": [
"Generate speech from text (TTS)",
"Transcribe audio with timing (STT)",
"Meeting AI: upload recordings, get transcripts and notes",
"Upload audio files from ChatGPT or by link",
"Remove background noise (voice isolation)",
"Chat completions with Aisha LLM",
"List voices and models"
],
"websiteURL": "https://voicelab.uz",
"supportURL": "https://docs.voicelab.uz/mcp/security",
"privacyPolicyURL": "https://voicelab.uz/privacy",
"termsOfServiceURL": "https://voicelab.uz/terms",
"defaultPrompt": [
"Transcribe this audio file",
"Summarize this meeting recording with notes",
"Generate speech for: Hello, welcome to VoiceLab"
],
"brandColor": "#4F46E5",
"composerIcon": "./assets/icon.png",
"logo": "./assets/logo.png"
},
"onboardingSkill": "./skills/get-started/SKILL.md",
"review": {
"test_cases": {
"positive": [
{
"description": "Generate speech (TTS)",
"prompt": "Use VoiceLab to generate English speech for: Hello, welcome to our product demo.",
"tools_triggered": "list_voices, text_to_speech",
"expected_behavior": "Returns base64-encoded audio with natural speech"
},
{
"description": "Transcribe audio (STT)",
"prompt": "Transcribe this audio file with speaker labels using VoiceLab",
"tools_triggered": "speech_to_text, get_transcription",
"expected_behavior": "Returns transcription with word timing and speaker labels"
},
{
"description": "List available voices",
"prompt": "Show me available English voices in VoiceLab",
"tools_triggered": "list_voices",
"expected_behavior": "Returns a list of voices with metadata"
},
{
"description": "Voice isolation",
"prompt": "Remove background noise from this audio using VoiceLab",
"tools_triggered": "isolate_voice, get_isolation",
"expected_behavior": "Returns a job id, then isolated audio when complete"
},
{
"description": "Realtime ticket",
"prompt": "Create a VoiceLab realtime WebSocket ticket for streaming TTS",
"tools_triggered": "create_realtime_ticket",
"expected_behavior": "Returns a ticket usable for realtime streaming"
},
{
"description": "Meeting from attached file",
"prompt": "Use VoiceLab to transcribe this attached meeting recording and give me the notes.",
"tools_triggered": "create_meeting_from_file, get_meeting",
"expected_behavior": "Creates a meeting from the ChatGPT file, then returns transcript and AI notes once status is ready"
},
{
"description": "Meeting from audio URL",
"prompt": "Create a VoiceLab meeting from https://example.com/standup.mp3 and summarize it when ready.",
"tools_triggered": "create_meeting, get_meeting",
"expected_behavior": "Returns a queued meeting id, then transcript and notes after polling"
},
{
"description": "Transcribe attached file",
"prompt": "Transcribe this attached audio file with VoiceLab, with speaker labels.",
"tools_triggered": "transcribe_file, get_transcription",
"expected_behavior": "Returns a transcription job, then text with timing and speaker labels"
},
{
"description": "STT from audio URL",
"prompt": "Transcribe https://example.com/interview.wav in English with VoiceLab.",
"tools_triggered": "speech_to_text, get_transcription",
"expected_behavior": "Accepts audio_url and returns the transcription when complete"
},
{
"description": "List and manage meetings",
"prompt": "List my recent VoiceLab meetings and rename the latest one to Weekly sync.",
"tools_triggered": "list_meetings, rename_meeting",
"expected_behavior": "Returns meeting history and confirms the new title"
},
{
"description": "Meeting capabilities",
"prompt": "Which languages does VoiceLab Meeting AI support?",
"tools_triggered": "list_meeting_capabilities",
"expected_behavior": "Returns supported meeting languages and feature flags"
}
],
"negative": [
{
"description": "Invalid voice ID",
"prompt": "Generate speech with voice ID nonexistent_voice_123",
"tools_triggered": "text_to_speech",
"expected_behavior": "Returns a validation error for invalid voice_id"
},
{
"description": "Unsupported language",
"prompt": "Generate speech in Klingon using VoiceLab",
"tools_triggered": "list_tts_languages",
"expected_behavior": "Shows only supported languages or returns an error"
},
{
"description": "Missing audio parameter",
"prompt": "Transcribe audio without providing any audio file",
"tools_triggered": "speech_to_text",
"expected_behavior": "Returns an error that audio input is required"
},
{
"description": "Two audio sources",
"prompt": "Create a VoiceLab meeting using both https://example.com/a.mp3 and this attached file.",
"tools_triggered": "create_meeting",
"expected_behavior": "Returns a validation error: provide exactly one audio source"
},
{
"description": "Non-HTTPS audio URL",
"prompt": "Transcribe http://example.com/a.mp3 with VoiceLab.",
"tools_triggered": "speech_to_text",
"expected_behavior": "Returns a validation error: audio_url must be HTTPS"
},
{
"description": "Unknown meeting id",
"prompt": "Get VoiceLab meeting mtg_doesnotexist.",
"tools_triggered": "get_meeting",
"expected_behavior": "Returns a not-found error"
}
]
},
"commerce": false,
"commerce_description": "This plugin does not sell products or process payments.",
"demo_recording_url": "https://github.com/voicelab-uz/mcp/releases/download/openai-plugin-demo-2026-10-02/voicelab-mcp-openai-demo.mp4"
},
"publication": {
"release_notes": "1.0.4: Adds Meeting AI (create, list, get, rename, delete, regenerate notes; capabilities), file upload from ChatGPT attachments (create_meeting_from_file, transcribe_file), and audio_url input for STT and meetings. get_meeting_translations is exposed but not available with API keys (expected 403/404); it is excluded from test cases."
},
"apps": "./.app.json"
}
},
"review": {
"test_cases": [
{
"type": "positive",
"description": "Generate speech (TTS)",
"prompt": "Use VoiceLab to generate English speech for: Hello, welcome to our product demo.",
"expected_tools": [
"list_voices",
"text_to_speech"
],
"expected_outcome": "Returns base64-encoded audio with natural speech"
},
{
"type": "positive",
"description": "Transcribe audio (STT)",
"prompt": "Transcribe this audio file with speaker labels using VoiceLab",
"expected_tools": [
"speech_to_text",
"get_transcription"
],
"expected_outcome": "Returns transcription with word timing and speaker labels"
},
{
"type": "positive",
"description": "List available voices",
"prompt": "Show me available English voices in VoiceLab",
"expected_tools": [
"list_voices"
],
"expected_outcome": "Returns a list of voices with metadata"
},
{
"type": "positive",
"description": "Voice isolation",
"prompt": "Remove background noise from this audio using VoiceLab",
"expected_tools": [
"isolate_voice",
"get_isolation"
],
"expected_outcome": "Returns a job id, then isolated audio when complete"
},
{
"type": "positive",
"description": "Realtime ticket",
"prompt": "Create a VoiceLab realtime WebSocket ticket for streaming TTS",
"expected_tools": [
"create_realtime_ticket"
],
"expected_outcome": "Returns a ticket usable for realtime streaming"
},
{
"type": "negative",
"description": "Invalid voice ID",
"prompt": "Generate speech with voice ID nonexistent_voice_123",
"expected_tools": [
"text_to_speech"
],
"expected_outcome": "Returns a validation error for invalid voice_id"
},
{
"type": "negative",
"description": "Unsupported language",
"prompt": "Generate speech in Klingon using VoiceLab",
"expected_tools": [
"list_tts_languages"
],
"expected_outcome": "Shows only supported languages or returns an error"
},
{
"type": "negative",
"description": "Missing audio parameter",
"prompt": "Transcribe audio without providing any audio file",
"expected_tools": [
"speech_to_text"
],
"expected_outcome": "Returns an error that audio input is required"
},
{
"type": "positive",
"description": "Meeting from attached file",
"prompt": "Use VoiceLab to transcribe this attached meeting recording and give me the notes.",
"expected_tools": [
"create_meeting_from_file",
"get_meeting"
],
"expected_outcome": "Creates a meeting from the ChatGPT file, then returns transcript and AI notes once status is ready"
},
{
"type": "positive",
"description": "Meeting from audio URL",
"prompt": "Create a VoiceLab meeting from https://example.com/standup.mp3 and summarize it when ready.",
"expected_tools": [
"create_meeting",
"get_meeting"
],
"expected_outcome": "Returns a queued meeting id, then transcript and notes after polling"
},
{
"type": "positive",
"description": "Transcribe attached file",
"prompt": "Transcribe this attached audio file with VoiceLab, with speaker labels.",
"expected_tools": [
"transcribe_file",
"get_transcription"
],
"expected_outcome": "Returns a transcription job, then text with timing and speaker labels"
},
{
"type": "positive",
"description": "STT from audio URL",
"prompt": "Transcribe https://example.com/interview.wav in English with VoiceLab.",
"expected_tools": [
"speech_to_text",
"get_transcription"
],
"expected_outcome": "Accepts audio_url and returns the transcription when complete"
},
{
"type": "positive",
"description": "List and manage meetings",
"prompt": "List my recent VoiceLab meetings and rename the latest one to Weekly sync.",
"expected_tools": [
"list_meetings",
"rename_meeting"
],
"expected_outcome": "Returns meeting history and confirms the new title"
},
{
"type": "positive",
"description": "Meeting capabilities",
"prompt": "Which languages does VoiceLab Meeting AI support?",
"expected_tools": [
"list_meeting_capabilities"
],
"expected_outcome": "Returns supported meeting languages and feature flags"
},
{
"type": "negative",
"description": "Two audio sources",
"prompt": "Create a VoiceLab meeting using both https://example.com/a.mp3 and this attached file.",
"expected_tools": [
"create_meeting"
],
"expected_outcome": "Returns a validation error: provide exactly one audio source"
},
{
"type": "negative",
"description": "Non-HTTPS audio URL",
"prompt": "Transcribe http://example.com/a.mp3 with VoiceLab.",
"expected_tools": [
"speech_to_text"
],
"expected_outcome": "Returns a validation error: audio_url must be HTTPS"
},
{
"type": "negative",
"description": "Unknown meeting id",
"prompt": "Get VoiceLab meeting mtg_doesnotexist.",
"expected_tools": [
"get_meeting"
],
"expected_outcome": "Returns a not-found error"
}
]
},
"publication": {
"release_notes": "1.0.4: Adds Meeting AI (create, list, get, rename, delete, regenerate notes; capabilities), file upload from ChatGPT attachments (create_meeting_from_file, transcribe_file), and audio_url input for STT and meetings. get_meeting_translations is exposed but not available with API keys (expected 403/404); it is excluded from test cases."
}
}
SHA-256: a799c259562e16754b67676bfc9b6aa667697833dec152ac5db8cc851fffd173