← Files SubAARCHIVED FILE

plugin.json

8.21 KB · Nov 9, 2026 · 01:31 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "suba",
  "version": "1.0.4",
  "description": "Translate subtitle files with your studio style guide and glossary using SubA hosted models. Review the minute estimate before translation and download the result in its original format.",
  "author": {
    "name": "Vertex Pixels Media LLC",
    "email": "support@entendu.studio",
    "url": "https://entendu.studio"
  },
  "homepage": "https://entendu.studio/support/suba-publisher.html",
  "keywords": [
    "subtitles",
    "translation",
    "localization"
  ],
  "extensions": {
    "com.openai": {
      "onboardingSkill": "./skills/get-started/SKILL.md",
      "publication": {
        "release_notes": "Company submission by Vertex Pixels Media LLC. All 17 MCP tools now declare explicit boolean readOnlyHint, destructiveHint, openWorldHint and idempotentHint with behavior explanations. Added read/revise cue workflows, free post-translation repair and clearly labeled review-draft export after incomplete QC. Company publisher metadata; OAuth is explicitly declared in mcp.json using the OpenAI auth extension with dynamic client registration and existing discovery endpoints. No old account app IDs or credentials are bundled. Reviewer sign-in uses the pre-provisioned official review-email account through normal email codes. Round-trip test creates a fresh synthetic job and has no dependency on an unavailable completed fixture."
      },
      "review": {
        "commerce": true,
        "commerce_description": "SubA provides a paid digital subtitle translation service with an initial registration allowance. It shows a minute estimate and requires approval before starting translation. Existing Entendu billing handles subscriptions and prepaid minutes; this plugin does not collect payment-card data.",
        "test_cases": {
          "positive": [
            {
              "description": "Account balance",
              "prompt": "How many SubA minutes do I have? Do not translate anything.",
              "tools_triggered": "suba_balance",
              "expected_behavior": "Use the connected user account and report current usable and held minutes without starting translation."
            },
            {
              "description": "First-use guidance",
              "prompt": "Help me get started and export my source-language subtitles.",
              "tools_triggered": "suba_balance",
              "expected_behavior": "Show concise onboarding and the packaged export guide. Query actual account balance without creating a job or implying that an existing account receives a new registration grant."
            },
            {
              "description": "Synthetic translation with explicit one-minute approval",
              "prompt": "Use SubA to translate this synthetic SRT from source language English to target language French (France), with the available default target-language guide. Show the rules and estimate first. I approve exactly one billable minute if the displayed estimate is one minute; if it is higher, stop. Do not run additional paid QC. Poll the same job and export in the original format. Preserve all cue IDs and timing.\n1\n00:00:01,000 --> 00:00:03,000\nThe rehearsal starts at noon.\n\n2\n00:00:03,500 --> 00:00:05,500\nPlease bring the blue folder.\n\n3\n00:00:06,000 --> 00:00:09,000\nWe will meet by the stage door.\n",
              "tools_triggered": "suba_rule_schema, suba_create_job, suba_load_subtitle, suba_validate_rules, suba_estimate, suba_balance, suba_translate, suba_get_job, suba_export",
              "expected_behavior": "Use the supplied synthetic material and authenticated reviewer account only. Resolve the guide into valid rules and show any unresolved questions. Start only after validating rules, confirming a one-minute estimate and sufficient balance. Return the translated three-cue SRT with unchanged IDs/order/timing; do not create duplicate jobs on retries. Stop with a concrete error if any precondition fails. No paid QC is requested."
            },
            {
              "description": "Lossless synthetic round trip",
              "prompt": "Create a passthrough job from this synthetic SRT and export unchanged, without translation: 1\n00:00:01,000 --> 00:00:03,000\nWelcome to the rehearsal.\n",
              "tools_triggered": "suba_create_job, suba_load_subtitle, suba_export",
              "expected_behavior": "Upload the supplied UTF-8 bytes as base64 and export identical bytes; preserve cue ID and timing and consume no translation minutes."
            },
            {
              "description": "Synthetic estimate without charge",
              "prompt": "Estimate translation of this synthetic SRT from my source language (English) to my target language (French), but do not start: 1\n00:00:01,000 --> 00:00:03,000\nWelcome to the rehearsal.\n",
              "tools_triggered": "suba_create_job, suba_load_subtitle, suba_estimate",
              "expected_behavior": "Return the runtime and billable minute estimate without calling suba_translate or charging minutes."
            }
          ],
          "negative": [
            {
              "description": "Ordinary email translation",
              "prompt": "Translate this ordinary email into French: Thank you for attending our meeting. Please send the agenda tomorrow. This is not a subtitle task.",
              "expected_behavior": "Do not invoke SubA for ordinary non-subtitle email translation; answer within the chat or explain the subtitle scope."
            },
            {
              "description": "Video and audio editing",
              "prompt": "Trim my video to ten seconds and remove the background noise. Do not create or translate subtitles.",
              "expected_behavior": "Do not invoke SubA for video trimming or noise removal; explain that the plugin processes subtitle files."
            },
            {
              "description": "Film recommendations",
              "prompt": "Recommend three lighthearted films for the weekend. I do not need subtitles or translation.",
              "expected_behavior": "Do not invoke SubA for film recommendations unrelated to subtitle work."
            }
          ]
        },
        "demo_recording_url": "https://entendu.studio/support/suba-review/suba-reference-client-demo.mp4"
      },
      "interface": {
        "displayName": "SubA",
        "shortDescription": "Subtitle translation & export",
        "longDescription": "SubA, provided by Vertex Pixels Media LLC, helps professional subtitlers localize subtitle files using studio protocols and glossaries. Supported formats: SRT, VTT, TTAL, TTML, PXTT and DFXP. An entendu. service account is required. Review the minute estimate before starting translation or standalone QA. Backend translation uses SubA hosted models; host chat activity may still count toward platform usage. Read and revise individual cues without retranslating or charging translation minutes again. QC failures retain completed work and allow clearly labeled review-draft exports with outstanding issues. Human review is required before delivery. Jobs are available for seven days; project glossary and account records have separate retention.",
        "developerName": "Vertex Pixels Media LLC",
        "category": "Productivity",
        "capabilities": [
          "Translate subtitles",
          "Validate subtitle rules",
          "Read and revise existing cues",
          "Export delivery or review drafts",
          "Review project glossary candidates"
        ],
        "websiteURL": "https://entendu.studio/support/suba-publisher.html",
        "supportURL": "https://entendu.studio/support/user-guide.html",
        "defaultPrompt": [
          "Help me get started and export my source-language subtitles.",
          "Translate this subtitle file into my target language using the attached studio style guide.",
          "Check my available translation minutes."
        ],
        "brandColor": "#34383E",
        "brandColorDark": "#D8D4CC",
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/icon.png",
        "privacyPolicyURL": "https://entendu.studio/support/suba-privacy.html",
        "termsOfServiceURL": "https://entendu.studio/support/suba-terms.html"
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: d3933fc5f4470955336d1944997218315ec1142d1ae302cbda6b66082dc70210