justcaptions

Audio transcription, caption correction, translation and 15 animated video caption styles.

Should I use this

Quality & Safety

B
Description quality
94%
Schema completeness
63%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'pick_emojis' description lacks action verbin pick_emojis

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,139Tokens (tool definitions)
~966 BTypical response size
Moderate attention impact (0.89% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "justcaptions": {
      "url": "https://api.justcaptions.com/mcp"
    }
  }
}

Remote endpoints

https://api.justcaptions.com/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_styles

List 15 local rendering presets, aliases, style overrides and platform safe areas. This remote server returns the catalog; render via the local MCP.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_pricing

Current API prices and monthly free allowances, no key needed.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_usage

Current usage, estimated bill and monthly spend cap for your configured API key.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢estimate_cost(audio_seconds, text_chars)

Estimate additional cloud charges and available allowance before a batch. Includes active budget holds; does not reserve credit.

Input Schema

{
  "type": "object",
  "properties": {
    "audio_seconds": {
      "type": "number",
      "minimum": 0,
      "maximum": 864000
    },
    "text_chars": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡transcribe_audio(audio_base64, mime_type, language, glossary, request_id)

Transcribe extracted audio into segments and word timestamps. Max 12 MB decoded. Never send video. Charged by audio duration past the free allowance.

Input Schema

{
  "type": "object",
  "properties": {
    "audio_base64": {
      "type": "string",
      "minLength": 1,
      "maxLength": 16000004
    },
    "mime_type": {
      "type": "string",
      "maxLength": 100
    },
    "language": {
      "type": "string",
      "maxLength": 32
    },
    "glossary": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      },
      "maxItems": 100
    },
    "request_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Unique request ID; reuse only when retrying identical work to avoid repeating paid calls."
    }
  },
  "required": [
    "audio_base64",
    "mime_type"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢correct_captions(captions, language, glossary, request_id)

Correct caption text, preserving caption count and order. Does not realign word timing. Billed by input characters.

Input Schema

{
  "type": "object",
  "properties": {
    "captions": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "minItems": 1,
      "maxItems": 400
    },
    "language": {
      "type": "string",
      "maxLength": 32
    },
    "glossary": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      },
      "maxItems": 100
    },
    "request_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Unique request ID; reuse only when retrying identical work to avoid repeating paid calls."
    }
  },
  "required": [
    "captions"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢translate_captions(captions, target_language, glossary, request_id)

Translate caption lines, preserving count and order. Target-language word timing is estimated by the local renderer. Billed by input characters.

Input Schema

{
  "type": "object",
  "properties": {
    "captions": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "minItems": 1,
      "maxItems": 400
    },
    "target_language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32
    },
    "glossary": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      },
      "maxItems": 100
    },
    "request_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Unique request ID; reuse only when retrying identical work to avoid repeating paid calls."
    }
  },
  "required": [
    "captions",
    "target_language"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪pick_emojis(captions, language, request_id)

Pick one emoji for each caption. Billed by input characters.

Input Schema

{
  "type": "object",
  "properties": {
    "captions": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "minItems": 1,
      "maxItems": 1000
    },
    "language": {
      "type": "string",
      "maxLength": 32
    },
    "request_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_-]+$",
      "description": "Unique request ID; reuse only when retrying identical work to avoid repeating paid calls."
    }
  },
  "required": [
    "captions"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools