{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "com.scriptivox.www/transcription",
  "description": "AI transcription from URLs or files. 119 languages, diarization, SRT/VTT/text export.",
  "version": "1.2.1",
  "repository": {
    "url": "https://github.com/SparkleOfficial/scriptivox-mcp-server",
    "source": "github"
  },
  "packages": [
    {
      "registryType": "npm",
      "identifier": "@scriptivox/mcp-server",
      "version": "1.2.1",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "description": "Your Scriptivox API key (starts with sk_live_). Get one at https://scriptivox.com",
          "isRequired": false,
          "format": "string",
          "isSecret": true,
          "name": "SCRIPTIVOX_API_KEY"
        }
      ]
    },
    {
      "registryType": "oci",
      "identifier": "docker.io/sparkleofficialmain/scriptivox-mcp-server:1.2.1",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "description": "Your Scriptivox API key (starts with sk_live_). Get one at https://scriptivox.com",
          "isRequired": false,
          "format": "string",
          "isSecret": true,
          "name": "SCRIPTIVOX_API_KEY"
        }
      ]
    }
  ],
  "websiteUrl": "https://platform.scriptivox.com",
  "documentationUrl": "https://platform.scriptivox.com/docs",
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://platform.scriptivox.com/mcp",
      "headers": [
        {
          "name": "Authorization",
          "description": "Optional Scriptivox API key (sk_live_...). Without it the endpoint answers 401 and your MCP client signs in with OAuth 2.1 (dynamic client registration, PKCE); every tool works either way.",
          "isRequired": false,
          "isSecret": true,
          "value": "Bearer {scriptivox_api_key}",
          "variables": {
            "scriptivox_api_key": {
              "description": "API key (sk_live_...) from https://platform.scriptivox.com/keys",
              "isRequired": false,
              "isSecret": true,
              "format": "string"
            }
          }
        }
      ]
    }
  ],
  "x-api": {
    "baseUrl": "https://api.scriptivox.com/v1",
    "openapi": "https://platform.scriptivox.com/openapi.json",
    "authentication": {
      "type": "apiKey",
      "in": "header",
      "name": "Authorization",
      "format": "sk_live_*",
      "signupUrl": "https://platform.scriptivox.com/keys"
    }
  },
  "x-tools": [
    {
      "name": "transcribe_url",
      "description": "Transcribe audio or video from a publicly accessible URL.",
      "annotations": {
        "title": "Transcribe from URL",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "transcribe_upload",
      "description": "Upload a local audio or video file and transcribe it.",
      "annotations": {
        "title": "Transcribe an upload",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "transcribe_status",
      "description": "Check the status of a transcription job and fetch its transcript.",
      "annotations": {
        "title": "Transcription status",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "transcribe_cancel",
      "description": "Cancel an in-flight transcription and release its reserved balance.",
      "annotations": {
        "title": "Cancel transcription",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "transcribe_delete",
      "description": "Soft-delete a completed or failed transcription.",
      "annotations": {
        "title": "Delete transcription",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_transcriptions",
      "description": "List transcriptions with status, date and pagination filters.",
      "annotations": {
        "title": "List transcriptions",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "export_transcript",
      "description": "Export a transcript as SRT, WebVTT or plain text.",
      "annotations": {
        "title": "Export transcript",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "check_balance",
      "description": "Check the remaining account balance and estimated audio hours.",
      "annotations": {
        "title": "Check balance",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_supported_languages",
      "description": "List the 119 supported transcription languages and their codes.",
      "annotations": {
        "title": "Supported languages",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_pricing",
      "description": "Get current API pricing and plan information.",
      "annotations": {
        "title": "Pricing",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_api_docs",
      "description": "Retrieve the API reference for a given endpoint or topic.",
      "annotations": {
        "title": "API reference",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_product_info",
      "description": "Get general information about Scriptivox and its capabilities.",
      "annotations": {
        "title": "Product information",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "transcription_url",
      "description": "Deprecated alias for transcribe_url, kept for @scriptivox/mcp-server@1.0.x configs. Removed in 2.0.0.",
      "annotations": {
        "title": "Transcribe from URL (deprecated alias)",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "transcription_status",
      "description": "Deprecated alias for transcribe_status, kept for @scriptivox/mcp-server@1.0.x configs. Removed in 2.0.0.",
      "annotations": {
        "title": "Transcription status (deprecated alias)",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_account",
      "description": "Create a Scriptivox account. No credential needed; the address must be confirmed by email before the account can do anything.",
      "annotations": {
        "title": "Create an account",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_account",
      "description": "Read the signed-in person's plan, entitlements and quota.",
      "annotations": {
        "title": "Account and plan",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_credits",
      "description": "Check what is left on the plan: AI credits, transcriptions today, monthly minutes, meeting-bot minutes, storage.",
      "hostedOnly": true,
      "annotations": {
        "title": "Credits and usage left",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_api_key",
      "description": "Mint an API key for the signed-in person. The bridge from a web account to the transcription API.",
      "annotations": {
        "title": "Create an API key",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "revoke_api_key",
      "description": "Permanently revoke an API key belonging to the signed-in person.",
      "annotations": {
        "title": "Revoke an API key",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "purchase_plan",
      "description": "Start checkout for a web subscription and return a Stripe Checkout URL. Charges nothing on its own.",
      "annotations": {
        "title": "Start plan checkout",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "top_up_balance",
      "description": "Start checkout to add credit to the prepaid API balance and return a Stripe Checkout URL. Charges nothing on its own.",
      "annotations": {
        "title": "Start balance top-up",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_billing_history",
      "description": "Read past invoices, add-on charges and API deposits, with a link to each Stripe invoice. Read-only.",
      "annotations": {
        "title": "Billing history",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_billing_portal_url",
      "description": "Return a link to the Stripe billing portal. Charges nothing and changes nothing on its own.",
      "annotations": {
        "title": "Billing portal link",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "search_transcripts",
      "description": "Find transcripts in the person's library by file name, folder, tag, workspace, status or date. The source of the ids every other library tool needs.",
      "annotations": {
        "title": "Search transcripts",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "find_in_transcripts",
      "description": "Search what was said across every transcript in the library; returns ranked files with their matching lines.",
      "hostedOnly": true,
      "annotations": {
        "title": "Search inside transcripts",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "rename_transcription",
      "description": "Rename a transcript in the library.",
      "hostedOnly": true,
      "annotations": {
        "title": "Rename a transcript",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "rename_speakers",
      "description": "Give the speakers in a transcript real names, as on the website.",
      "hostedOnly": true,
      "annotations": {
        "title": "Rename speakers",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "edit_transcript",
      "description": "Correct transcript text: line edits, or find and replace.",
      "hostedOnly": true,
      "annotations": {
        "title": "Edit transcript text",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "restore_original_transcript",
      "description": "Undo every text edit and go back to the transcript as first transcribed.",
      "hostedOnly": true,
      "annotations": {
        "title": "Restore the original transcript",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "remove_tags",
      "description": "Remove tags from up to 50 transcriptions.",
      "hostedOnly": true,
      "annotations": {
        "title": "Remove tags",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "move_to_workspace",
      "description": "Move transcriptions into another of the person's workspaces.",
      "hostedOnly": true,
      "annotations": {
        "title": "Move to workspace",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_meeting_participants",
      "description": "Names, and email addresses the account already holds, for one recorded meeting.",
      "hostedOnly": true,
      "annotations": {
        "title": "Meeting participants",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "send_meeting_summary",
      "description": "Email one meeting's summary and share link to the people the person names.",
      "hostedOnly": true,
      "annotations": {
        "title": "Email the meeting summary",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_tags",
      "description": "List the tags in use on transcriptions with a count of each, plus the web app's separate named-tag registry.",
      "annotations": {
        "title": "List tags",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "tag_transcriptions",
      "description": "Add tags to up to 10 existing transcriptions at once. More than 10 is refused, not truncated.",
      "annotations": {
        "title": "Tag transcriptions",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_folders",
      "description": "List the folders on the signed-in person's account.",
      "annotations": {
        "title": "List folders",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "move_to_folder",
      "description": "File up to 50 existing transcriptions into a folder, or out of any folder.",
      "annotations": {
        "title": "Move to folder",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_workspaces",
      "description": "List the signed-in person's workspaces.",
      "annotations": {
        "title": "List workspaces",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_transcript_audio",
      "description": "Return a one-hour signed URL for an existing transcription's source media.",
      "annotations": {
        "title": "Transcript audio link",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_transcript",
      "description": "Read the text of a completed transcription in the library, with timestamps and speakers, in pages.",
      "hostedOnly": true,
      "annotations": {
        "title": "Read a transcript",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "open_library",
      "description": "Show the person's transcripts, folders and tags in the chat.",
      "hostedOnly": true,
      "annotations": {
        "title": "Transcripts",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "edit_subtitles",
      "description": "Open a subtitle editor for a completed transcription; returns SRT.",
      "hostedOnly": true,
      "annotations": {
        "title": "Edit subtitles",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "open_meeting_bot",
      "description": "Show scheduled meeting bots and a form to send one to a call.",
      "hostedOnly": true,
      "annotations": {
        "title": "Open the meeting bot",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "open_subtitle_file",
      "description": "Open a .srt or .vtt file in the subtitle editor (ChatGPT desktop file viewer).",
      "hostedOnly": true,
      "annotations": {
        "title": "Subtitle editor",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "read_settings",
      "description": "Read the Scriptivox settings shown on the ChatGPT plugin page.",
      "hostedOnly": true,
      "annotations": {
        "title": "Scriptivox settings",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "update_settings",
      "description": "Save changed Scriptivox settings from the ChatGPT plugin page.",
      "hostedOnly": true,
      "annotations": {
        "title": "Save Scriptivox settings",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "export_library",
      "description": "Screen-only: export a library transcript as srt, vtt or text.",
      "hostedOnly": true,
      "annotations": {
        "title": "Export a library transcript",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "chat_with_transcript",
      "description": "Ask a question about an existing transcript. Spends the account's LLM credits.",
      "annotations": {
        "title": "Chat with a transcript",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "list_automations",
      "description": "List the automations the signed-in person built in the web app.",
      "annotations": {
        "title": "List automations",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_automation",
      "description": "Create a reusable automation of AI-prompt and add-tags steps; runs nothing until it is run.",
      "hostedOnly": true,
      "annotations": {
        "title": "Create an automation",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "run_automation",
      "description": "Run an existing automation over one completed transcription. Spends the account's LLM credits.",
      "annotations": {
        "title": "Run an automation",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_automation_run",
      "description": "Poll the progress of an automation run, step by step.",
      "annotations": {
        "title": "Automation run status",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "start_meeting_bot",
      "description": "Send a bot to record ONE Zoom, Meet, Teams or Webex call. Rate limited to 5 per hour; never takes a list.",
      "annotations": {
        "title": "Send a meeting bot",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "stop_meeting_bot",
      "description": "Tell a meeting bot in a call to leave. What it recorded is still transcribed.",
      "annotations": {
        "title": "Stop a meeting bot",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "cancel_scheduled_bot",
      "description": "Cancel a meeting bot that has not joined yet, so it never joins.",
      "annotations": {
        "title": "Cancel a scheduled bot",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_scheduled_meetings",
      "description": "List scheduled and running meeting bots, plus dispatches still queued.",
      "annotations": {
        "title": "List scheduled meetings",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "search_docs",
      "description": "Search the Scriptivox documentation and agent guides. Returns matching documents with URLs and summaries, best match first.",
      "hostedOnly": true,
      "annotations": {
        "title": "Search the documentation",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_doc",
      "description": "Fetch a full Scriptivox documentation page as markdown, by slug.",
      "hostedOnly": true,
      "annotations": {
        "title": "Fetch a documentation page",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "login",
      "description": "Sign in to a Scriptivox account in the browser so the account and billing tools can act on it. Local server only.",
      "stdioOnly": true,
      "annotations": {
        "title": "Sign in",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "logout",
      "description": "Forget the stored Scriptivox sign-in on this machine. Local server only.",
      "stdioOnly": true,
      "annotations": {
        "title": "Sign out",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ],
  "x-supabase": {
    "url": "https://gnyikikzcyrimwuxzbak.supabase.co",
    "rest": "https://gnyikikzcyrimwuxzbak.supabase.co/rest/v1",
    "storage": "https://gnyikikzcyrimwuxzbak.supabase.co/storage/v1",
    "publishableKey": "sb_publishable_5Hhfe5FdaB9F1ERUz_l_Hw_IVKizhU7",
    "note": "The project publishable key, the same one served in the web app bundle. PostgREST requires it in an `apikey` header alongside the user access token; it authorises nothing on its own, and row-level security is evaluated against the user token."
  },
  "x-cli": {
    "npmPackage": "@scriptivox-api/cli",
    "command": "npx @scriptivox-api/cli",
    "documentation": "https://platform.scriptivox.com/docs/cli"
  },
  "x-when-to-use": "Use these tools to transcribe recorded audio or video files into text — meeting and interview recordings, podcasts, lecture capture, call archives, and video that needs captions. Supports 119 languages, speaker diarization, word-level timestamps, and SRT/WebVTT/plain-text export. Not for live streaming or real-time dictation: every job takes a complete file, between 1 second and 10 hours long and up to 5 GB."
}