# Subtitle Clean — MCP tool `findutils:subtitle_clean`

Clean the text of a SubRip (.srt) or WebVTT (.vtt) caption file without touching its timing: strip HTML tags such as <i> and <font>, ASS/SSA override blocks such as {\an8} that leak into exported files, and optionally SDH descriptions in brackets ([music], (applause)) and speaker labels ("JOHN:"). Cues that end up empty are dropped and counted, never written as blank cues. Every start and end time is kept exactly. The output keeps the input format unless output_format is "srt".

- Category: media
- MCP server: https://mcp.findutils.com/ (Streamable HTTP, no API keys, 120 req/min per IP)
- REST endpoint: POST https://api.findutils.com/api/tools/subtitle-clean/execute (no API keys, 60 req/min per IP)
- Reference page: https://findutils.com/mcp/subtitle-clean/
- Same tool on the other surface: https://findutils.com/api/subtitle-clean/

## Connect

```bash
claude mcp add findutils --transport http https://mcp.findutils.com/
```

Claude Desktop (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "findutils": {
      "url": "https://mcp.findutils.com/"
    }
  }
}
```

## Call the tool (verified example)

```bash
curl -X POST https://mcp.findutils.com/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "subtitle_clean",
      "arguments": {
        "input": "1\n00:00:01,000 --> 00:00:04,000\n{\\an8}<i>Good morning.</i>\n\n2\n00:00:05,500 --> 00:00:08,250\n[music] JOHN: Hello again.\n",
        "strip_sdh": true,
        "strip_speakers": true
      }
    }
  }'
```

## Input schema

| Argument | Type | Required | Description |
|---|---|---|---|
| `input` | string | yes | Caption file contents, either SubRip or WebVTT. |
| `strip_html` | boolean | no | Remove HTML-style tags (<i>, <b>, <font>, WebVTT <c>/<v> tags). Default: true. Default: `true`. |
| `strip_ass` | boolean | no | Remove ASS/SSA override blocks like {\an8} and turn \N into a line break. Default: true. Default: `true`. |
| `strip_sdh` | boolean | no | Remove SDH descriptions in [square] or (round) brackets and music notes. Default: false. Default: `false`. |
| `strip_speakers` | boolean | no | Remove a speaker label at the start of a line, e.g. "JOHN:" or "Dr. Smith:". Default: false. Default: `false`. |
| `normalize_whitespace` | boolean | no | Collapse repeated spaces and drop blank lines inside a cue. Default: true. Default: `true`. |
| `output_format` | string (same \| srt) | no | Write the same format as the input ("same", default) or always SubRip ("srt"). Default: `"same"`. |

Example arguments (verified):

```json
{
  "input": "1\n00:00:01,000 --> 00:00:04,000\n{\\an8}<i>Good morning.</i>\n\n2\n00:00:05,500 --> 00:00:08,250\n[music] JOHN: Hello again.\n",
  "strip_sdh": true,
  "strip_speakers": true
}
```

## Also a REST endpoint

```bash
curl -X POST https://api.findutils.com/api/tools/subtitle-clean/execute \
  -H "Content-Type: application/json" \
  -d '{
    "input": "1\n00:00:01,000 --> 00:00:04,000\n{\\an8}<i>Good morning.</i>\n\n2\n00:00:05,500 --> 00:00:08,250\n[music] JOHN: Hello again.\n",
    "strip_sdh": true,
    "strip_speakers": true
  }'

# Parameter schema
curl https://api.findutils.com/api/tools/subtitle-clean
```

Full REST reference: https://findutils.com/api/subtitle-clean/ · OpenAPI 3.1 spec: https://findutils.com/api/openapi.json

---
Full catalog: POST https://mcp.findutils.com/ with method `tools/list` · https://findutils.com/mcp/ · https://findutils.com/llms.txt
