# Subtitle Fps Convert — MCP tool `findutils:subtitle_fps_convert`

Rescale every cue in a SubRip (.srt) or WebVTT (.vtt) caption file from one frame rate to another, so a track that slowly drifts out of sync after a frame-rate conversion lines up again. Each timestamp is multiplied by source_fps divided by target_fps: going from 23.976 to 25 makes the file play about 4 percent shorter, and the mismatch that was a second at the ten-minute mark becomes several seconds by the end. This is the drift a fixed offset cannot fix, because the error grows with time rather than staying constant. The output keeps the input format, cue text, order and WebVTT cue settings. Use subtitle_shift instead when the whole track is early or late by a constant amount.

- 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-fps-convert/execute (no API keys, 60 req/min per IP)
- Reference page: https://findutils.com/mcp/subtitle-fps-convert/
- Same tool on the other surface: https://findutils.com/api/subtitle-fps-convert/

## 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_fps_convert",
      "arguments": {
        "input": "1\n00:00:10,000 --> 00:00:12,000\nTen seconds in.\n\n2\n01:00:00,000 --> 01:00:02,000\nAn hour in, where the drift shows.\n",
        "source_fps": 23.976,
        "target_fps": 25
      }
    }
  }'
```

## Input schema

| Argument | Type | Required | Description |
|---|---|---|---|
| `input` | string | yes | Caption file contents, either SubRip or WebVTT. |
| `source_fps` | number | yes | The frame rate the caption timings were written for, e.g. 23.976. Between 1 and 1000. |
| `target_fps` | number | yes | The frame rate of the video the captions must match, e.g. 25. Between 1 and 1000, and different from source_fps. |

Example arguments (verified):

```json
{
  "input": "1\n00:00:10,000 --> 00:00:12,000\nTen seconds in.\n\n2\n01:00:00,000 --> 01:00:02,000\nAn hour in, where the drift shows.\n",
  "source_fps": 23.976,
  "target_fps": 25
}
```

## Also a REST endpoint

```bash
curl -X POST https://api.findutils.com/api/tools/subtitle-fps-convert/execute \
  -H "Content-Type: application/json" \
  -d '{
    "input": "1\n00:00:10,000 --> 00:00:12,000\nTen seconds in.\n\n2\n01:00:00,000 --> 01:00:02,000\nAn hour in, where the drift shows.\n",
    "source_fps": 23.976,
    "target_fps": 25
  }'

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

Full REST reference: https://findutils.com/api/subtitle-fps-convert/ · 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
